通过使用NHibernate连接表来映射元素

时间:2010-12-29 22:52:16

标签: nhibernate nhibernate-mapping

这是我以前做了很多次的事情,但我的脑子现在只是空白,我会尝试简单概述一下我目前的情况。

我目前有3个表格如下所示:

Office > id, name
Person > id, name
Office_Personnel > office_id, person_id

然后我有一个Person(id,name)和Office模型,但Office模型包含人员信息:

public class Office
{
 int Id {get;set;}
 string Name {get;set;}
 ICollection<Person> Personnel {get;set;}
}

映射人很容易,但现在我有点难过为什么办公室不能正确映射。当我绘制人员时,我选择使用一套,因为不应该有任何重复,但它似乎没有像我期望的那样工作......

<set name="Personnel" table="office_personnel" cascade="all">
  <key column="office_id" />
  <one-to-many class="Person"/>
</set>

现在有一件事让我感到奇怪的是,没有迹象表明哪个人应该绑定(person_id)。它一直试图在Person表中找到* office_id *列。

我确信这只是一个简单的问题而且我是个白痴,但任何帮助都会很棒!

另一方面,我正在权衡我是否应该打扰中间人表,因为我可以直接在Person表中放置一个Office_Id列,但我不是100%肯定是否在我的真正的项目中,Person类可能位于更多的办公室......

1 个答案:

答案 0 :(得分:1)

为了正确映射,您需要有3个实体:

Person 1 <-> n Personnel n <-> 1 Office

或使用连接表将其映射为多对多关联(请参阅hibernate文档的第8.3节)

 Person n <-> n Office