entity-framework - 我应该将 TransactionScope 与 DbContext 一起使用吗

标签 entity-framework transactions

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

我应该将 savechanges 包装在 TransactionScope using 语句中。

我认为 SaveChanges 的工作方式类似于或者是一种事务方法。

示例:

在服务方法中,我在一个 http 请求中删除和添加不同的实体,在服务方法末尾,我执行 SaveChanges 一个 ONE Con​​text。

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

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

最佳答案

没有必要将 SaveChanges 调用包装在另一个 TransactionScope 中,如果;

  1. 如果您不想在同一事务中使用多个上下文。
  2. 如果即使在相同的上下文中您也没有进行多次 SaveChanges 调用。例如,删除后一个 SaveChanges,添加后另一个 SaveChanges...

总之,您可以在同一上下文中执行多个删除/添加操作,并在最后调用一次 SaveChanges 方法 - 它们将全部应用于一个事务中。仅当您有嵌套事务场景时才需要 TransactionScope。

关于entity-framework - 我应该将 TransactionScope 与 DbContext 一起使用吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14983237/

相关文章:

c# - 使用 Entity Framework 持久化状态模式

entity-framework - 如果访问导航属性没有预先加载(并且延迟加载被禁用),则配置 EF 抛出

database - 这是可序列化的吗?

javascript - 存在查询问题的 Firestore 事务

html - db.transaction,先发生错误回调还是成功回调

c# - 未调用 DropCreateDatabaseAlways 种子

asp.net - Entity Framework 查询第一次连接和执行需要很长时间

c# - 在调用 SaveChanges() 之前,在 foreach 循环中添加或更新实体需要太长时间?

java - @Transactional 在类定义和所有方法上。有什么区别?

c# - 带有多表插入的 EntityFramework 事务回滚