【发布时间】:2012-03-21 03:39:38
【问题描述】:
我正在考虑为 NHibernate 持久层创建自己的 IUnitOfWork 实现。
似乎正确的方法是在构造函数中实例化ISession 和ITransaction,然后在析构函数或Dispose() 方法中进行处理。
当然,如果有人调用Save() 方法,那么ISession 将被刷新,ITransaction 将是完整的,所以在调用Save() 之后,将不会有一个有效的打开事务到@987654329 @再次...除非我提交了第一笔交易并立即打开了另一笔新交易。但这是个好主意吗?
在设计方面,做一次提交操作是有意义的,但我不一定能控制代码,其他开发人员可能不太遵守 UnitOfWork 模式。
试图让 UnitOfWork 容忍每个会话的多个事务,我是否会失去/获得任何东西?我是否应该只检查一个打开的事务并在它已经提交时抛出一个异常,而不是创建一个新事务?
【问题讨论】:
-
它是为 Web 应用程序设计的。
标签: c# nhibernate transactions unit-of-work