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

  • 相关阅读:
    bzoj1066【SCOI2007】蜥蜴
    ZOJ 2588 Burning Bridges(无向连通图求割边)
    javascript模拟类的最佳实践
    Java接口源码--System和应用程序进程间通信
    uestc 94(区间更新)
    HDU 4667 Building Fence(求凸包的周长)
    系统视图,系统表,系统存储过程的使用
    iOS学习9_事件分发&响应链
    热门游戏<开心消消乐>的“加壳”诡计!!
    【SICP练习】152 练习4.8
  • 原文地址:https://www.cnblogs.com/jiangchengbiao/p/9303907.html
Copyright © 2011-2022 走看看