已更新:这是完全错误的假设。我重新测试了它,果然我错了。 NHibernate生成SQL,将所有子行都传递给子列表。感谢sirrocco发表评论。我认为更好的问题是我们如何能够做这样的工作。NHibernate如何知道哪些类属性将值放入?
我在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
)
流利的映射
public class ParentMap : ClassMap<Parent>
{
public ParentMap()
{
HasMany<Child>(x => x.Children1);
HasMany<Child>(x => x.Children2);
}
}
正如你所看到的,althou gh类Parent
具有两个Child
列表(即,Children1
和Children2
),当它们被映射到数据库表格时,表格中没有任何内容说明哪个子行应该在Children1
或Children2
列表中。
从数据库的角度来看,我们只知道哪个子行属于哪个父级,但哪个子级没有列出。
但是,这似乎在NHibernate中正常工作。现场发生了什么事情?
如果有人感兴趣,有一个很好的例子和解决方案发布在stackoverflow中。 http://stackoverflow.com/questions/1773239/how-can-i-use-fluent-nhibernate-automapping-with-multiple-lists-of-the-same-type – kimsk 2009-12-15 16:15:16