【发布时间】:2010-10-21 07:46:42
【问题描述】:
NHibernate 中是否存在批量更新命令?据我所知,它没有。那么处理这种情况的最佳方法是什么?我想做以下事情:
- 从数据库中获取对象列表(我们称它们为用户列表,
List<User>) - 更改这些对象的属性,(
Users.Foreach(User=>User.Country="Antartica") - 单独更新每个项目 (
Users.Foreach(User=>NHibernate.Session.Update(User))。 - 致电
Session.Flush更新数据库。
这是一个好方法吗?这会导致我的代码和数据库之间进行大量往返吗?
你怎么看?还是有更优雅的解决方案?
【问题讨论】:
-
3:我认为你的意思不是提交,而是更新。
-
是的,你是对的;我的意思是更新。
-
您应该删除第 3 步,因为
Session.Update不会“更新每个项目”。相反,NHibernate 会监视对对象所做的所有更改,并自行将更改写入数据库,而无需您告诉它。 -
@Justice +1 表示该评论,但请记住它何时保存到数据库取决于会话的 FlushMode
标签: nhibernate