在服务层或存储库层中管理事务?

时间:2010-02-15 12:07:33

标签: repository-pattern transactions unit-of-work

我有一种情况,根据一些约束对多个表进行插入和更新。因此,对于这些场景,使用事务范围是很自然的。现在,我有一个存储库层和一个服务层。服务层调解存储库和UI,并且持久无知。 现在我很困惑在服务或存储库层中使用事务的位置。我没有使用任何ORM。我也看到人们主张关于这种情况的工作单元模式。有没有关于适合我当前场景的工作单元模式的例子,我见过的所有例子都在使用ORMS。

谢谢,

2 个答案:

答案 0 :(得分:4)

这当然取决于您的系统,但通常我会在服务层执行此操作。特别是如果您的服务层方法调用多个细粒度的存储库方法并期望它们全部提交或全部回滚。

答案 1 :(得分:3)

有些问题可能有助于解决此问题。

哪一层了解交易要求? 存储库界面的粒度是多少?

在我的世界中,我们倾向于使用细粒度的持久性操作,插入,更新,删除。然后在服务层中组合它们。因此,在这种环境中,我很明显它是了解交易范围的服务层。