1.在ABP中其实多个DbContext并没有在同一个事物中执行,那他是如何操作的,我的理解是

  • 在不使用事物的时候

    把多个DbContext存放在ActiveDbContexts 在调用工作单元的时候。savechange方法会循环这个List
public override void SaveChanges()
{
foreach (var dbContext in GetAllActiveDbContexts())
{
SaveChangesInDbContext(dbContext);
}
} protected virtual void SaveChangesInDbContext(DbContext dbContext)
{
dbContext.SaveChanges();
}
  • 使用事物的时候
var  ActiveTransactions = new Dictionary<string, ActiveTransactionInfo>();

然后循环这个 ,一个个commit

 public void Commit()
{
foreach (var activeTransaction in ActiveTransactions.Values)
{
activeTransaction.DbContextTransaction.Commit(); foreach (var dbContext in activeTransaction.AttendedDbContexts)
{
if (dbContext.HasRelationalTransactionManager())
{
continue; //Relational databases use the shared transaction
} dbContext.Database.CommitTransaction();
}
}
}

所有不同数据库的事物 没有在一个事物中实现。

2.如何实现在多个DbContext中实现事物提交

官方文档1

官方文档2

在_unitOfWorkManager中获取的一个Dbcontext,

 var strategy = _unitOfWorkManager.Current.GetDbContext<TestDBContext>().Database.CreateExecutionStrategy();
  strategy.Execute(() =>
{
using (var transaction = new TransactionScope())
{
_unitOfWorkManager.Current.SaveChanges(); transaction.Complete();
}
});

使用策略事物

最新文章

  1. 清空form表单
  2. 「2014-3-13」Javascript Engine, Java VM, Python interpreter, PyPy &ndash; a glance
  3. SignalR入门之持久性连接
  4. C# 复制(深拷贝、浅拷贝)
  5. ms sql server 在abator生成的 insert 无法获取插入 id 的原因
  6. [转]细说MySQL Explain和Optimizer Trace简介
  7. 验证SMB登入
  8. Rake::TestTask 介绍
  9. js 获取url 参数
  10. openerp 经典收藏 通过view实现字段的只读、隐藏操作(转载)
  11. 下破解安装Python开发工具WingIDE4.1
  12. 利用switch语句计算特定的年份的月份共有几天。
  13. [zz]npm安装错误解决方法
  14. jQuery技巧大放送【转】
  15. SpringMVC轻松学习-SpringMVC介绍(一)
  16. c#基础知识索引器
  17. win10的hyper-v共享文件夹
  18. 使用Swagger自动生成API文档
  19. Gym 101873G - Water Testing - [皮克定理]
  20. @NotNull、@NotEmpty、@NotBlank的区别

热门文章

  1. Python操作pymysql写入数据库时的错误
  2. jmeter循环和计数器
  3. Java练习 SDUT-1133_模拟计算器
  4. POJ-3159_Candies
  5. Java练习 SDUT-1132_斐波那契数列
  6. @atcoder - AGC036D@ Negative Cycle
  7. oracle SELECT子句中避免使用 ‘ * ‘
  8. @noi.ac - 489@ shuffle
  9. Project Euler Problem 12-Highly divisible triangular number
  10. 小程序加载大图片 使用widthFix时,图片先拉伸然后才显示完全