Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 需要使用nHibernate中基于字符串的主键访问表_C#_Sql Server_Nhibernate_Goldmine - Fatal编程技术网

C# 需要使用nHibernate中基于字符串的主键访问表

C# 需要使用nHibernate中基于字符串的主键访问表,c#,sql-server,nhibernate,goldmine,C#,Sql Server,Nhibernate,Goldmine,我正在尝试使用nHibernate映射SQL Server数据库,其中包含由外部软件生成的带有varchar主键的表,我需要更新/读取(无插入)访问权限 我无法找到克服以下错误的方法: XXXX.Tests.GMCRepository_Fixture.Can_get_existing_GMC_by_parameter' failed: NHibernate.MappingException : XXXX.Domain.Mappings.GMC2.hbm.xml(4,6): XML validat

我正在尝试使用nHibernate映射SQL Server数据库,其中包含由外部软件生成的带有
varchar
主键的表,我需要更新/读取(无插入)访问权限

我无法找到克服以下错误的方法:

XXXX.Tests.GMCRepository_Fixture.Can_get_existing_GMC_by_parameter'
failed: NHibernate.MappingException :
XXXX.Domain.Mappings.GMC2.hbm.xml(4,6): XML validation error: The element 'class' in namespace 'urn:nhibernate-mapping-2.2' has invalid child element 'property' in     namespace 'urn:nhibernate-mapping-2.2'. List of possible elements expected: 'meta, subselect, cache, synchronize, comment, tuplizer, id, composite-id' in namespace 'urn:nhibernate-    mapping-2.2'.
研究表明,此错误与未定义有效的主键(id)有关

映射XML看起来像:

<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping assembly="XXXX.Domain" namespace="XXXX.Domain" xmlns="urn:nhibernate-mapping-2.2" schema="GM.dbo">
  <class name="GMC2" table="C2" lazy="true" >
    <property name="PARAMETER">
      <column name="PARAMETER" sql-type="varchar" not-null="true" />
    </property>
    ...
    <id name="Recid">
      <column name="recid" sql-type="varchar" not-null="true" />
    </id>
  </class>
</hibernate-mapping>

...

谢谢你的帮助

我认为约定是将ID映射作为类声明下的第一件事。 此外,作为Id映射的一部分,您需要指定Id的生成器。在您的情况下,我认为您需要在Id映射中添加。您的类映射将如下所示

<?xml version="1.0" encoding="utf-8"?> 
<hibernate-mapping assembly="XXXXCRMAPI.Domain" namespace="XXXXCRMAPI.Domain" xmlns="urn:nhibernate-mapping-2.2" schema="GoldMine.dbo"> 
  <class name="GMContact2" table="CONTACT2" lazy="true" > 
    <id name="Recid"> 
      <generator type="assigned" />
      <column name="recid" sql-type="varchar" not-null="true" /> 
    </id> 
    <property name="Accountno"> 
      <column name="ACCOUNTNO" sql-type="varchar" not-null="true" /> 
    </property> 
    ... 

  </class> 
</hibernate-mapping>

... 

谢谢Nathan,将其放在首位解决了此问题。