在nHibernate中Save()和SaveOrUpdate()有什么区别?
本文关键字:什么 区别 SaveOrUpdate Save nHibernate | 更新日期: 2023-09-27 18:11:45
我想知道在nHibernate中Save()和SaveOrUpdate()方法之间的区别是什么,我所知道的是主要的区别是:
Save ()
- 返回已保存实体的id
- 简单地保存一个实体(不更新?)
SaveOrUpdate ()
-
不返回已保存实体的id
-
调用Save()(如果实体在数据库中不存在)或Update()(如果实体存在)
但我的问题是,是保存()在nHibernate类似于保存()在java Hibernate?因为如果我想写一个简单的函数,它将保存一个实体,并只返回一个已经保存的实体的id。我应该这样写函数:
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%正确。
相关的问题/博客- stackoverflow相关问题(Hibernate)
- 博客相关问题(Hibernate)
谢谢你的回答!
我使用NHibernate已经有一段时间了,但是从我的记忆
- Save -相当于Insert
- Update -执行相当于Update 的操作
如果您有一个对象集合,其中一些是新对象,另一些是从DB中读取的,可能已经或没有被更改,您将使用SaveOrUpdate
枚举集合一次,并确保将更改发送到DB:
foreach(var customer in customers) { session.SaveOrUpdate(customer); }
为了避免你做这样的事情:
foreach(var customer in customers)
{
if(customer.Id == 0) { session.Save(customer); }
else { session.Update(customer); }
}