如何管理会话/事务生命周期以处理许多实体

时间:2011-03-09 19:59:08

标签: c# .net nhibernate

在我的团队正在开发的项目中,有一个Windows服务迭代某个表中的所有实体,并根据我们定义的一些规则更新它们的一些字段。我们使用NHibernate作为我们的ORM工具。目前,我们为整个进程打开一个会话和一个事务,这意味着在所有实体被执行后提交事务。我认为这种方法并不好,我想听一些更多的意见: 我们应该保持目前管理会话的方式,还是应该采用不同的方法?

我想到的一个选项是为每个实体打开一个交易,另一个建议是为每个实体打开一个新会话。 您认为哪种方法最有效?

1 个答案:

答案 0 :(得分:2)

没有一种方法可以做到;这一切都取决于具体案例。

在我正在开发的应用程序中,我有三种方法的示例,并且有理由选择每种方法。例如:

  • 整个过程必须具有事务原子性:使用单个事务
  • 该过程有很多常见数据,但“主”表中的每条记录都可以视为一个工作单元:使用单个会话,多个事务
  • 处理主表中的每条记录应独立于其他记录(包括错误处理):每条记录使用一个会话