zoukankan      html  css  js  c++  java
  • 数据库事务 工作单元

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

    给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  跟第二种方式一样   会提交到数据库

  • 相关阅读:
    如何使用Java计算货币/钱~(How to calculate monetary values in Java)
    BigDecimal类
    状态码定义
    常见服务器返回状态码(Status Codes)
    2020-3-26学习地图
    ReentrantLock类
    HashSet类
    Vector类
    课程总结
    第十四周课程总结&实验报告
  • 原文地址:https://www.cnblogs.com/jiangchengbiao/p/9303907.html
Copyright © 2011-2022 走看看