C# nHibernate中的Save()和SaveOrUpdate()有什么区别
我想知道nHibernate中Save()和SaveOrUpdate()方法之间的区别是什么,而我所知道的是主要区别在于: 保存()C# nHibernate中的Save()和SaveOrUpdate()有什么区别,c#,nhibernate,C#,Nhibernate,我想知道nHibernate中Save()和SaveOrUpdate()方法之间的区别是什么,而我所知道的是主要区别在于: 保存() 已保存实体的返回id 只需保存一个实体(不更新?) SaveOrUpdate() 不返回已保存实体的id 调用Save()(如果实体在数据库中不存在),或调用Update()(如果实体存在) 但我的问题是,nHibernate中的Save()与java Hibernate中的Save()相似吗?因为如果我想写一个简单的函数,它将保存实体并只返回已经保存的实
- 已保存实体的返回id
- 只需保存一个实体(不更新?)
- 不返回已保存实体的id
- 调用Save()(如果实体在数据库中不存在),或调用Update()(如果实体存在)
public int ReturnMeAnIdOfSavedEntity(IEntity ent)
{
_session.SaveOrUpdate(ent);
return ent.Id;
}
public int ReturnMeAnIdOfSavedEntity(IEntity ent)
{
return (int)_session.Save(ent);
}
或者我可以编写这样的函数:
public int ReturnMeAnIdOfSavedEntity(IEntity ent)
{
_session.SaveOrUpdate(ent);
return ent.Id;
}
public int ReturnMeAnIdOfSavedEntity(IEntity ent)
{
return (int)_session.Save(ent);
}
我还发现了关于Save()的问题和博客,但在Hibernate中,而不是在NHibernate中,因此如果函数的作用类似,我就不是100%正确
相关问题/博客
谢谢你的回答 我已经有一段时间没有用过NHibernate了,但从我的记忆来看
- 保存-执行与插入等效的操作
- 更新-是否执行与更新等效的操作
SaveOrUpdate
,其中一些对象是新对象,另一些对象是从数据库读取的,可能已更改,也可能未更改,以枚举该集合一次,并确保将更改发送到数据库:
foreach(var customer in customers) { session.SaveOrUpdate(customer); }
要避免您这样做,请执行以下操作:
foreach(var customer in customers)
{
if(customer.Id == 0) { session.Save(customer); }
else { session.Update(customer); }
}
我已经有一段时间没用NHibernate了,但从我记忆中
- 保存-执行与插入等效的操作
- 更新-是否执行与更新等效的操作
SaveOrUpdate
,其中一些对象是新对象,另一些对象是从数据库读取的,可能已更改,也可能未更改,以枚举该集合一次,并确保将更改发送到数据库:
foreach(var customer in customers) { session.SaveOrUpdate(customer); }
要避免您这样做,请执行以下操作:
foreach(var customer in customers)
{
if(customer.Id == 0) { session.Save(customer); }
else { session.Update(customer); }
}
谢谢你的回答!我只想知道Save在对数据库中已经存在的实体进行调用时是否也调用Update()。所以我想它应该抛出一个错误而不是调用Update()(取决于您的答案)。谢谢您的回答!我只想知道Save在对数据库中已经存在的实体进行调用时是否也调用Update()。因此,我认为它宁愿抛出一个错误,而不是调用Update()(取决于您的答案)。