更新: 这是完全错误的假设。我重新测试了它,果然我错了。 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
列表(即Children1
和Children2
),但当它们映射到数据库表时,表格中没有任何内容表明哪个子行应该在Children1
或Children2
列表中。
从数据库的角度来看,我们只知道哪个子行属于哪个子行而不是哪个子列表。
然而,这似乎在NHibernate中正常工作。现场背后有什么事吗?
答案 0 :(得分:1)
你确定它能正常工作吗?我刚刚对此进行了测试,并为每个集合添加了一个孩子,正如预期的那样,每个集合都有相同的2个孩子。