我应该将TransactionScope与DbContext一起使用

时间:2013-02-20 15:11:16

标签: entity-framework transactions

根据此链接:EF Code First DBContext and Transactions

我应该使用statement语句将savechanges包装在TransactionScope中。

我认为SaveChanges的工作方式类似于或是一种交易方法。

示例:

在服务方法中,我删除并在服务方法结束时在一个http请求中添加不同的实体我执行SaveChanges one ONE Con​​text。

我永远不会有多重背景。它始终与Ninject在http请求的生命周期中创建的上下文注入相同,并在存储库之间共享。

当我有多个dbcontext时,我只需要在TransactionScope中包装DbContext.SAveChanges吗? - 因为这些可能是多个数据库,也就是分布式事务 - ?

1 个答案:

答案 0 :(得分:3)

如果;

,则无需将SaveChanges调用包装在另一个TransactionScope中
  1. 如果您不想在同一个交易中使用多个上下文。
  2. 如果您没有使用相同的上下文进行多次SaveChanges调用。例如,删除后一个SaveChanges,添加后另一个SaveChanges ...
  3. 总之,您可以使用相同的上下文执行多个删除/添加操作,并最终调用SaveChanges方法一次 - 它们将全部应用于一个事务中。只有在嵌套事务方案中才需要TransactionScope。