nHibernate 中的 Save() 和 SaveOrUpdate() 有什么区别
What is the difference between Save() and SaveOrUpdate() in nHibernate
我想知道 nHibernate 中的 Save() 和 SaveOrUpdate() 方法有什么区别,我知道的主要区别是:
保存()
- return 已保存实体的 id
- 只是保存一个实体(没有更新?)
保存或更新()
不是return已保存实体的 ID
调用 Save()(如果数据库中不存在实体),或调用 Update()(如果存在实体)
但我的问题是,nHibernate 中的 Save() 是否类似于 java Hibernate 中的 Save()?因为如果我想写一个简单的函数,它会保存实体,return 我只会保存一个已经保存的实体的 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% 正确。
相关question/blogs
- Whosebug related question (Hibernate)
- blog related question (Hibernate)
感谢解答!
我已经有一段时间没有使用 NHibernate 了,但据我所知
- 保存 - 相当于插入
- Update - 相当于 Update
如果你有一个对象集合,你会使用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 中的 Save() 和 SaveOrUpdate() 方法有什么区别,我知道的主要区别是:
保存()
- return 已保存实体的 id
- 只是保存一个实体(没有更新?)
保存或更新()
不是return已保存实体的 ID
调用 Save()(如果数据库中不存在实体),或调用 Update()(如果存在实体)
但我的问题是,nHibernate 中的 Save() 是否类似于 java Hibernate 中的 Save()?因为如果我想写一个简单的函数,它会保存实体,return 我只会保存一个已经保存的实体的 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% 正确。
相关question/blogs
- Whosebug related question (Hibernate)
- blog related question (Hibernate)
感谢解答!
我已经有一段时间没有使用 NHibernate 了,但据我所知
- 保存 - 相当于插入
- Update - 相当于 Update
如果你有一个对象集合,你会使用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); }
}