Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用实体的Id保存父实体而不是使用整个实体_C#_.net_Nhibernate_Fluent Nhibernate - Fatal编程技术网

C# 使用实体的Id保存父实体而不是使用整个实体

C# 使用实体的Id保存父实体而不是使用整个实体,c#,.net,nhibernate,fluent-nhibernate,C#,.net,Nhibernate,Fluent Nhibernate,我已经使用Nhibernate有一段时间了,但我想知道是否可以使用父项的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;} } 您需要实例化一个父对象。但是,这并不意味着您实际上必须从数据库加载父记录。如果您可以使用session.L

我已经使用Nhibernate有一段时间了,但我想知道是否可以使用父项的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;}
}

您需要实例化一个父对象。但是,这并不意味着您实际上必须从数据库加载父记录。如果您可以使用session.Load来实例化父对象,那么,如果您为实体启用了延迟加载,那么这只会创建一个保存Id的代理对象

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

session.Save(c);
var c=new Child(){
name=“Foo”,
parent=session.Load(parentId)
};
会议.保存(c);

感谢您提供的解决方案。您是如何深入了解nhibernate的?通过四年左右的生产使用与nhibernate的斗争。