我想知道nHibernate中Save()和SaveOrUpdate()方法之间的区别是什么,我所知道的主要区别是:
保存()
返回已保存实体的ID
只需保存一个实体(无需更新?)
SaveOrUpdate()
不返回已保存实体的ID
调用Save()(如果db中不存在实体),或调用Update()(如果实体存在)
但是我的问题是,nHibernate中的Save()是否类似于Java Hibernate中的Save()?因为如果我要编写简单的函数,它将保存实体并仅向我返回已保存实体的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 related question (Hibernate)
blog related question (Hibernate)
感谢您的回答!
最佳答案
自从我使用NHibernate已经有一段时间了,但是根据我的记忆
保存-相当于插入
更新-等同于更新
如果您有一个对象集合,则可以使用SaveOrUpdate
,其中一些对象是新的,而另一些对象是从数据库读取的,可能已更改或未更改以枚举该对象一次,并确保将更改发送到D B:
foreach(var customer in customers) { session.SaveOrUpdate(customer); }
为了节省您做这样的事情:
foreach(var customer in customers)
{
if(customer.Id == 0) { session.Save(customer); }
else { session.Update(customer); }
}
关于c# - nHibernate中的Save()和SaveOrUpdate()有什么区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32454892/