NHibernate如何知道将值赋予哪些类属性?

时间:2009-08-13 05:47:14

标签: nhibernate fluent-nhibernate

更新: 这是完全错误的假设。我重新测试了它,果然我错了。 NHibernate生成SQL,将所有子行都带到子列表中。感谢sirrocco的评论。我认为更好的问题是我们如何做这样的工作。

我从Wiki中的Fluent NHibernate示例中修改了一些代码。

模型

public class Parent
{
  public IList<Child> Children1 { get; set; }
  public IList<Child> Children2 { get; set; }
}

public class Child
{}

模式

table Parent (
  ID int primary key
)

table Child (
  ID int primary key,
  ParentID int
)

Fluent Mapping

public class ParentMap : ClassMap<Parent>
{
  public ParentMap()
  {
    HasMany<Child>(x => x.Children1); 
    HasMany<Child>(x => x.Children2);
  }
}

正如您所看到的,虽然类Parent有两个Child列表(即Children1Children2),但当它们映射到数据库表时,表格中没有任何内容表明哪个子行应该在Children1Children2列表中。

从数据库的角度来看,我们只知道哪个子行属于哪个子行而不是哪个子列表。

然而,这似乎在NHibernate中正常工作。现场背后有什么事吗?

1 个答案:

答案 0 :(得分:1)

你确定它能正常工作吗?我刚刚对此进行了测试,并为每个集合添加了一个孩子,正如预期的那样,每个集合都有相同的2个孩子。