2013-05-31 47 views
0

我已經使用Nhibernate一段時間,但想知道如果你是一種方法來保存我的子實體只使用父項的Id而不是整個父項。使用實體ID保存父實體比使用整個實體

Class Parent 
{ 
int Id {get;set;} 
string name {get;set;} 
} 

Class Child 
{ 
int Id {get;set;} 
string name {get;set;} 
Parent parent {get;set;} 
} 

回答

2

您需要實例化一個父對象。但是,這並不意味着您實際上必須從數據庫加載父記錄。如果你可以使用session.Load實例化父對象,那麼只要你爲你的實體啓用了延遲加載,這只不過是創建一個包含Id的代理對象。

var c = new Child() { 
    name = "Foo", 
    parent = session.Load<Parent>(parentId) 
}; 

session.Save(c); 
+0

感謝您的解決方案。你如何深入瞭解nhibernate? – user1394622

+0

通過在生產中使用約四年來與它戰鬥。 – jsur