我正在使用实体框架 5.0 和 MVC4。我有几个域。它们中的每一个都有自己的 DbContext(使用适当的表)、存储库和服务。我还实现了 UnitOfWork。
在一项服务中为特定域处理特定的事务流很简单。我正在对表进行一些操作,最后我正在调用 UnitOfWork.Save,它的行为类似于 Transaction.Commit。
但是假设我有一个案例,我必须为两个不同的域调用操作,并且这两个操作必须放在一个事务中。我可以从控制器访问域的服务,因此从那里调用此操作。目前我可以看到三个解决方案:
- 我必须在控制器中有 UnitOfWork 并在最后调用 Save 方法(我不喜欢这个想法)。
- 创建一些服务,我将在其中拥有 UnitOfWork 并访问这两个服务(实际上它与上面的解决方案相同,但我将逻辑移动到单独的类)
- 我必须在控制器内创建额外的 TransactionScope 并在最后提交
请让我知道您认为最好的选择。如果你有以上三个以外的,请告诉我。或者也许我的概念有问题?我的意思是域及其数据库上下文?