NHibernate多对一或我错过了什么?

时间:2012-01-18 09:16:13

标签: c# nhibernate nhibernate-mapping

我已经和NHibernate 3.2进行了一段时间的斗争,我想要实现的是我认为应该相对简单的东西,但似乎无法找到代码示例。

我想拥有2个物品。

public class ObjectA { 
    public int Id;
    public string PropertyA;
    public ObjectB PropertyB;
}

public class ObjectB {
    public int Id;
    public string PropertyA;
}

在数据库方面我想要

----
Table ObjectA
----
Column Id
Column PropertyA
Column ObjectBId
----

----
Table ObjectB
----
Column Id
Column PropertyA
----

我似乎无法让这个工作,但它应该是微不足道的。我尝试过使用组件,但他们似乎只想创建一个包含ObjectA和ObjectB所有字段的表。我尝试过使用一对一映射,但它希望我通过将ObjectB中的引用属性返回给ObjectA来破坏我的对象模型。

2 个答案:

答案 0 :(得分:4)

这是一个非常简单的案例:

<class name="ObjectA">
   <id name="Id" access="property">
      <generator class="identity" />
   </id>

   <property name="PropertyA" />
   <many-to-one name="PropertyB" column="ObjectBId" class="ObjectB" />
</class>

<class name="ObjectB">
   <id name="Id" access="property">
      <generator class="identity" />
   </id>

   <property name="PropertyA" />
</class>

答案 1 :(得分:1)

应该很简单:

<class name="ObjectA">
  [Id and other properties]
  <many-to-one name="PropertyB" column="ObjectBId"/>
</class>

<class name="ObjectB">
  [Id and other properties]
</class>