2013-05-31 98 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