ABP-多个DbContext实现事物更新
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中实现事物提交
在_unitOfWorkManager中获取的一个Dbcontext,
 var strategy = _unitOfWorkManager.Current.GetDbContext<TestDBContext>().Database.CreateExecutionStrategy();
  strategy.Execute(() =>
            {
                using (var transaction = new TransactionScope())
                {
                    _unitOfWorkManager.Current.SaveChanges();
                    transaction.Complete();
                }
            });
使用策略事物
ABP-多个DbContext实现事物更新的更多相关文章
- ABP入门教程7 - 基础设施层更新数据库
		点这里进入ABP入门教程目录 设置数据库 在基础设施层(即JD.CRS.EntityFrameworkCore)打开数据库环境设置 JD.CRS.EntityFrameworkCore/EntityF ... 
- 基于ABP实现DDD--实体创建和更新
		本文主要介绍了通过构造函数和领域服务创建实体2种方式,后者多用于在创建实体时需要其它业务规则检测的场景.最后介绍了在应用服务层中如何进行实体的更新操作. 一.通过构造函数创建实体 假如Issue的 ... 
- [置顶]ABP框架系列总目录(持续更新)
		Articles & Tutorials Introduction & Step by Step With ASP.NET Core & Entity Framework Co ... 
- ABP取其精华
		目录 ABP中使用Swagger UI集成接口文档 ABP-AsyncLocal的使用 ABP-多个DbContext实现事物更新 持续更新中. 
- ABP理论学习之发布说明
		返回总目录 查看更详细信息以及下载源代码请查看原文档 ABP v0.9.2.0 | [更新日期:2016/6/6 11:21:28 ] 解决方案转换成xproj/project.json格式. 添加了 ... 
- ABP示例程序-使用AngularJs,ASP.NET MVC,Web API和EntityFramework创建N层的单页面Web应用
		本片文章翻译自ABP在CodeProject上的一个简单示例程序,网站上的程序是用ABP之前的版本创建的,模板创建界面及工程文档有所改变,本文基于最新的模板创建.通过这个简单的示例可以对ABP有个更深 ... 
- 实战框架ABP
		abp及实战框架概述 接触abp也快一年了,有过大半年的abp项目开发经验,目前项目中所用的abp框架版本为0.10.3,最新的abp框架已经到了1.4,并且支持了asp.net core.关于abp ... 
- ABP框架之——数据访问基础架构(下)
		大家好,我是张飞洪,感谢您的阅读,我会不定期和你分享学习心得,希望我的文章能成为你成长路上的一块垫脚石,我们一起精进. EF Core集成 EF Core是微软的ORM,可以使用它与主流的数据库提供商 ... 
- ABP入门系列(1)——学习Abp框架之实操演练
		作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ... 
随机推荐
- SDUT-3441_数据结构实验之二叉树二:遍历二叉树
			数据结构实验之二叉树二:遍历二叉树 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 已知二叉树的一个按先序遍历输入的字符 ... 
- oracle 和 mysql 遍历当前月份每一天
			获取当前月份的每一天的数据 oracle SELECT TO_DATE(TO_CHAR(SYSDATE, 'YYYYMM'), 'YYYYMM') + (ROWNUM - 1) DAY_ID FROM ... 
- saltStack 配置管理(也就是替换文件)
			目录 /srv/salt/base下面新建一个文件dns.sls /opt/resolv.conf_bak: #这个是文件替换的位置,也就说替换到远程文件的/opt/resolv.conf_ ... 
- Oracle数据字典全解
			一.概念: 1.数据字典(data dictionary)是 Oracle 数据库的一个重要组成部分,这是一组用于记录数据库信息的只读(read-only)表. 数据字典里存有用户信息.用户的权限信息 ... 
- H3C 路由器单播IP包转发
- JS获取手机型号和系统
			废话不多说,直接上源码 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type&q ... 
- css3鼠标移动图片上移效果
			css3的功能真是很强大,学无止境,不多说,直接上代码 css部分: <style> ;;} .text-center{text-align:center} .col_cont{width ... 
- Beta版是什么意思
			外部测试版的意思. 软件会出现三种版本 1.alpha内部测试版本,极不稳定,一般也不会出现的公众视线,仅供内部测试人员测试用. 2.beta公共测试版,就是对外发布软件的测试版,收集公众的意见和建议 ... 
- java框架之shiro
			#shiro简介 一.简介 Apache Shiro 是一个强大而灵活的开源安全框架,可以用于应用程序的身份验证,授权,会话管理和加密. Authentication:有时也简称为“登录”,这是一个证 ... 
- CF1166E The LCMs Must be Large
			CF1166E The LCMs Must be Large 构造趣题 正着推其实很不好推 不妨大力猜结论 如果两两集合都有交,那么一定可以 证明: 1.显然如果两个集合没有交,一定不可以 2.否则给 ... 
