我想知道nHibernate中Save()和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%正确的。
相关问题/博客
感谢您的回答!
答案 0 :(得分:4)
自从我使用NHibernate以来已经有一段时间了,但是从我记忆中来看
如果你有一个对象集合,你会使用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); }
}