2009-08-13 65 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

相關問題