NHibernate如何知道将值放入哪个类属性?

NHibernate如何知道将值放入哪个类属性?,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,更新:这是完全错误的假设。我重新测试了一下,果然弄错了。NHibernate生成SQL,该SQL将把所有子行都放到两个子列表中。感谢sirrocco的评论。我认为更好的问题是我们如何做类似的工作 我根据维基中的Fluent NHibernate示例稍微修改了代码 型号 public class Parent { public IList<Child> Children1 { get; set; } public IList<Child> Children2 { g

更新:这是完全错误的假设。我重新测试了一下,果然弄错了。NHibernate生成SQL,该SQL将把所有子行都放到两个子列表中。感谢sirrocco的评论。我认为更好的问题是我们如何做类似的工作

我根据维基中的Fluent NHibernate示例稍微修改了代码

型号

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

public class Child
{}
流畅映射

public class ParentMap : ClassMap<Parent>
{
  public ParentMap()
  {
    HasMany<Child>(x => x.Children1); 
    HasMany<Child>(x => x.Children2);
  }
}
公共类父映射:类映射
{
公共ParentMap()
{
有许多(x=>x.Children1);
有许多(x=>x.Children2);
}
}
正如您所看到的,虽然类
父级
有两个
子级
列表(即
Children1
Children2
),但当它们映射到数据库表时,表中没有任何内容说明哪些子级行应该在
Children1
Children2
列表中

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


然而,这在NHibernate中似乎是正确的。有什么事情发生在幕后吗?

你确定它工作正常吗?我刚刚测试了这个,并在每个集合中添加了一个子集合,正如预期的那样,每个集合都有相同的两个子集合。

是的,您是正确的。它实际上不起作用。我想我错了,因为我在一个NHibernate会话中测试了它,而NHibernate并没有从数据库创建对象。如果有人感兴趣,stackoverflow中有一个很好的示例和解决方案。
public class ParentMap : ClassMap<Parent>
{
  public ParentMap()
  {
    HasMany<Child>(x => x.Children1); 
    HasMany<Child>(x => x.Children2);
  }
}