2009-08-13 93 views
0

已更新:这是完全错误的假设。我重新测试了它,果然我错了。 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列表(即,Children1Children2),当它们被映射到数据库表格时,表格中没有任何内容说明哪个子行应该在Children1Children2列表中。

从数据库的角度来看,我们只知道哪个子行属于哪个父级,但哪个子级没有列出。

但是,这似乎在NHibernate中正常工作。现场发生了什么事情?

+0

如果有人感兴趣,有一个很好的例子和解决方案发布在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

回答

1

你确定它能正常工作吗?我只是测试了这一点,并为每个系列添加了一个孩子,并且如预期的那样,每个系列都有相同的2个孩子

+0

是的,你是对的。这不是真的有用。我想我错了,因为我在一个NHibernate会话中测试它,NHibernate没有从数据库创建对象。 – kimsk 2009-08-13 20:06:44

相关问题