如何在 NHibernate 中加载第二个 table 的列作为模型的属性?
How do I load columns of a second table as properties on a model in NHibernate?
我正在尝试使用 NHibernate 从数据库中的第二个 table 加载列作为模型的属性。我正在使用 XML 映射文件并尝试使用 join 标签。当我构建并尝试 运行 代码时,出现以下错误:
The element 'join' in namespace 'urn:nhibernate-mapping-2.2' has
invalid child element 'key' in namespace 'urn:nhibernate-mapping-2.2'.
List of possible elements expected: 'property, many-to-one, component,
dynamic-component, any, map, set, list, bag, idbag, array,
primitive-array, sql-insert, sql-update, sql-delete' in namespace
'urn:nhibernate-mapping-2.2'.
以下是映射文件的片段:
<class name="Article" table="article">
<id name="Id" column="articleID" unsaved-value="-1" type="Int32">
<generator class="identity" />
</id>
<property name="ClientId" column="accountID" type="Int32" />
<property name="PublicNumber" column="articleNum" />
<join table="articleLanguage">
<key column="accountID" />
<key column="articleNum" />
<property name="Question" />
<property name="LanguageId"/>
</join>
</class>
我做错了什么?
此方法仅在根实体(文章)具有复合键时才有效:
<class name="Article" table="article">
// not and <id> mapping
<!--<id name="Id" column="articleID" unsaved-value="-1" type="Int32">
<generator class="identity" />
</id>-->
// but <composite-id>
<composite-id>
<key-property name="Id" column="articleID" ></key-property>
<key-property name="PublicNumber" column="articleNum"></key-property>
</composite-id>
<property name="ClientId" column="accountID" type="Int32" />
<!-- <property name="PublicNumber" column="articleNum" /> -->
<join table="articleLanguage">
<!-- key is represented as ONE key with two columns
<!--
<key column="accountID" />
<key column="articleNum" />
-->
<key >
<column name="accountID"></column>
<column name="articleNum"></column>
</key>
<property name="Question" />
<property name="LanguageId"/>
</join>
</class>
我能理解这不是你喜欢的。但是,如果有两列表示关系,就没有其他办法了。因为能够准确地找到要加入的一行...我们需要两个键。
我正在尝试使用 NHibernate 从数据库中的第二个 table 加载列作为模型的属性。我正在使用 XML 映射文件并尝试使用 join 标签。当我构建并尝试 运行 代码时,出现以下错误:
The element 'join' in namespace 'urn:nhibernate-mapping-2.2' has invalid child element 'key' in namespace 'urn:nhibernate-mapping-2.2'. List of possible elements expected: 'property, many-to-one, component, dynamic-component, any, map, set, list, bag, idbag, array, primitive-array, sql-insert, sql-update, sql-delete' in namespace 'urn:nhibernate-mapping-2.2'.
以下是映射文件的片段:
<class name="Article" table="article">
<id name="Id" column="articleID" unsaved-value="-1" type="Int32">
<generator class="identity" />
</id>
<property name="ClientId" column="accountID" type="Int32" />
<property name="PublicNumber" column="articleNum" />
<join table="articleLanguage">
<key column="accountID" />
<key column="articleNum" />
<property name="Question" />
<property name="LanguageId"/>
</join>
</class>
我做错了什么?
此方法仅在根实体(文章)具有复合键时才有效:
<class name="Article" table="article">
// not and <id> mapping
<!--<id name="Id" column="articleID" unsaved-value="-1" type="Int32">
<generator class="identity" />
</id>-->
// but <composite-id>
<composite-id>
<key-property name="Id" column="articleID" ></key-property>
<key-property name="PublicNumber" column="articleNum"></key-property>
</composite-id>
<property name="ClientId" column="accountID" type="Int32" />
<!-- <property name="PublicNumber" column="articleNum" /> -->
<join table="articleLanguage">
<!-- key is represented as ONE key with two columns
<!--
<key column="accountID" />
<key column="articleNum" />
-->
<key >
<column name="accountID"></column>
<column name="articleNum"></column>
</key>
<property name="Question" />
<property name="LanguageId"/>
</join>
</class>
我能理解这不是你喜欢的。但是,如果有两列表示关系,就没有其他办法了。因为能够准确地找到要加入的一行...我们需要两个键。