【问题标题】:NHibernate Parent/Child mapping doesn't populate bagNHibernate 父/子映射不填充包
【发布时间】:2012-08-24 22:44:57
【问题描述】:

我环顾四周,发现了很多关于如何绘制儿童地图的示例,但我遗漏了一些东西。我无法让以下映射工作

表 1:

ORDERID RAW No
HISTORYID   RAW No

映射:

<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping auto-import="false" xmlns="urn:nhibernate-mapping-2.2">
  <class name="Order" lazy="false" table="Orders" polymorphism="explicit" dynamic-insert="true">
    <id name="OrderId" column="OrderId" type="Guid">
      <generator class="GuidGenerator" />
    </id>
    <bag name="OrderHistoryBag" lazy="false" table="OrderHistory" cascade="none">
      <key column="HistoryId" />
      <one-to-many class="OrderHistory" not-found="ignore" />
    </bag>
  </class>
</hibernate-mapping>

类属性:

public virtual IList<OrderHistory> OrderHistoryBag { get; set; }
public virtual Collection<OrderHistory> OrderHistory { get; set; }

表 2:

HISTORYSEQ  NUMBER(6,0) No
HISTORYID   RAW Yes

映射:

<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
  <class name="OrderHistory" lazy="false" table="OrderHistory" polymorphism="explicit">
    <id name="HistorySequence" column="HistorySeq" type="Int32">
      <generator class="sequence">
        <param name="sequence">S_Hist</param>
      </generator>
    </id>
    <many-to-one name="Order" class="Order" column="HistoryId" not-null="true" cascade="none" lazy="false" />
  </class>
</hibernate-mapping>

类属性:

public virtual Order Order { get; set; }

除了 OrderHistoryBag 及其关联的 OrderHistorycollection 始终是一个空集合之外,一切都编译并运行良好。

我想这个简短的故事是我试图将父类中的 HistoryId 映射到子类中的 HistoryId ,这两者都不是实体上的主键。 我的 NHibernate 程序集是 v1.2.1.400(不要问)。

【问题讨论】:

    标签: c# nhibernate nhibernate-mapping


    【解决方案1】:

    您需要使用 property-ref 指定用于加入 historyItems 的属性

    <property name="HistoryId" />
    <bag name="OrderHistoryBag" lazy="false" table="OrderHistory" cascade="none">
      <key column="HistoryId" property-ref="HistoryId"/>
      <one-to-many class="OrderHistory" not-found="ignore" />
    </bag>
    

    【讨论】:

    • 这正是我一直在寻找的东西。不幸的是,当我尝试运行时,加载 xml 时出现错误,说明“未定义属性引用。查看文档,属性引用在包上无效。我很有希望!
    • 对不起,我把属性引用放在了错误的标签中,现在修复了
    • 非常感谢,但在将其放在关键元素上时,我仍然收到“未定义属性引用”错误。我没有提到的一件事是它是 NH 1.2.1(最近编辑过的原始帖子)。
    • AFAIK property-ref 是在 NH 2.0 中实现的,如果可能的话我会升级 NH
    • 如果可能的话,我会升级到 NH 3..3.1 :D。再次感谢您的回复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-14
    • 2010-10-05
    • 2013-03-04
    • 2014-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多