根据此链接:EF Code First DBContext and Transactions
我应该将 savechanges 包装在 TransactionScope using 语句中。
我认为 SaveChanges 的工作方式类似于或者是一种事务方法。
示例:
在服务方法中,我在一个 http 请求中删除和添加不同的实体,在服务方法末尾,我执行 SaveChanges 一个 ONE Context。
我永远不会有多重上下文。它始终是由 Ninject 在 http 请求的生命周期中创建并在存储库之间共享的相同上下文注入(inject)。
那么,当我有多个 dbcontext 时,我是否只需要将 DbContext.SAveChanges 包装在 TransactionScope 中? - 因为这些可能是多个数据库,也称为分布式事务 - ?
最佳答案
没有必要将 SaveChanges 调用包装在另一个 TransactionScope 中,如果;
- 如果您不想在同一事务中使用多个上下文。
- 如果即使在相同的上下文中您也没有进行多次 SaveChanges 调用。例如,删除后一个 SaveChanges,添加后另一个 SaveChanges...
总之,您可以在同一上下文中执行多个删除/添加操作,并在最后调用一次 SaveChanges 方法 - 它们将全部应用于一个事务中。仅当您有嵌套事务场景时才需要 TransactionScope。
关于entity-framework - 我应该将 TransactionScope 与 DbContext 一起使用吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14983237/