已更新:這是完全錯誤的假設。我重新測試了它,果然我錯了。 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