首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在NHibernate中将第二个表的列作为属性加载到模型上?

如何在NHibernate中将第二个表的列作为属性加载到模型上?
EN

Stack Overflow用户
提问于 2015-03-15 22:38:13
回答 1查看 729关注 0票数 1

我试图使用NHibernate将数据库中的第二个表中的列作为模型上的属性加载。我使用一个XML映射文件,并尝试使用join标记。当我构建并尝试运行代码时,我会得到以下错误:

名称空间‘urn:nhibernate-映射-2.2’中的元素'join‘在名称空间’urn:nhibernate-映射-2.2‘中具有无效的子元素'key’。可能需要的元素列表:“属性、多对一、组件、动态组件、任意、映射、集、列表、袋、idbag、数组、基元数组、sql-insert、sql-update、sql-删除名称空间中的”urn:nhibernate- map -2.2“。

下面是映射文件的片段:

代码语言:javascript
复制
<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>

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-16 07:55:57

只有在根实体(条款)具有复合密钥的情况下,此方法才能工作:

代码语言:javascript
复制
<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>

我能理解这不是你喜欢的。但是,如果有两列表示关系,那么就没有其他方法了。因为只有一排才能加入.两把钥匙都要。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29067024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档