数据库事务 工作单元

如果全部成功则提交   出现一个失败则回滚

 

给person.Name赋值了    不需要进行保存方法  数据库中的数据会自动修改

 下面两种开启事务不知道有什么区别

需要创建这个对象进行依赖注入private readonly IUnitOfWorkManager unitOfWorkManager;

注意:工作单元没有不传TransactionScopeOption.RequiresNew参数  他不会等这个工作单元执行完毕就直接执行后面的

开启一个工作单元作用域

需要手动调用unitOfWord.Complete()方法  如果全部成功 则保存更改并提交事务

 TransactionScopeOption.RequiresNew加了这个参数  会先执行完毕这个工作单元中的任务 在执行后面的

 

 

 

在ABP中   应用服务层直接通过await CurrentUnitOfWork.SaveChangesAsync(); 提交事务 会先提交到一个缓存层的地方  实际上并没有提交到数据库   还是会等方法执行完毕才把整个事务提交到数据库

 

通过注入IUnitOfWorkManager开启事务

第一种方式  参数为TransactionScopeOption.Required   如果当前没有开启事务 则开启事务   如果已经开启事务  就会把using中的代码放到前面开启的事务中

 和上面那种方式一样    并没有提交到数据库  

            using (var unitOfWork = unitOfWorkManager.Begin(TransactionScopeOption.Required))
            {
                await salesOrderRepository.InsertAsync(salesOrder);

                await unitOfWork.CompleteAsync();
            }

 

第二种  TransactionScopeOption.RequiresNew  每次都会开启新事物  会局部先提交

在using代码中跟踪的实体会先提交到数据库

 

第三章 TransactionScopeOption.Suppress  跟第二种方式一样   会提交到数据库

posted @ 2018-07-13 11:13  几清  阅读(600)  评论(0编辑  收藏  举报