DotNetNext / SqlSugar

.Net aot ORM Fastest ORM Simple Easy VB.NET Sqlite orm Oracle ORM Mysql Orm 虚谷数据库 postgresql ORm SqlServer oRm 达梦 ORM 人大金仓 ORM 神通ORM C# ORM , C# ORM .NET ORM NET5 ORM .NET6 ORM ClickHouse orm QuestDb ,TDengine ORM,OceanBase orm,GaussDB orm ,Tidb orm Object/Relational Mapping
https://www.donet5.com/Home/Doc
MIT License
5.35k stars 1.34k forks source link

[wip] 新增 ISugarTransction #955

Closed John0King closed 3 years ago

John0King commented 3 years ago

对 #954 所说的 原型的实现逻辑

ToDo:

  1. 讨论实现逻辑是否正确
  2. AsyncApi
  3. AspNetCore
  4. 考虑将项目文件采用 Sdk style , 且使用多目标来编译2个库
DotNetNext commented 3 years ago

这块暂时不合并,影响太大了,现有功能都很稳定了,不能因为你喜欢using 我去大动刀去改这一块毕竟,稳定了这么多年了, 单例的

     using (Db)
    {
            Db.BeginTran();
            //调用外部方法也支持事务
            new Test2Manager().Insert(XX);//Test2Manager也是继承DbContext

            //插入数据
            CustomDal.Insert(customList);//使用Custom仓储方法
            OrderDal.Insert(orderList);//使用Order仓储方法

            throw new Exception("故意出错"); //出错会自动回滚

        }

我把默认dispose 改成回滚

DotNetNext commented 3 years ago

就算你喜欢用using 也是可以实现的

DotNetNext commented 3 years ago

这样我的话我只要改一行代码

DotNetNext commented 3 years ago
   using (Db) {
         Db.BeginTran();
        //代码
    }

修改了默认dispose提交方式

John0King commented 3 years ago
   using (Db) {
         Db.BeginTran();
        //代码
    }

修改了默认dispose提交方式

那个地方应该调用dispose,commit 和rollback都不应该调用, dispose是"智能"的

DotNetNext commented 3 years ago
      var db = GetInstance();
        using (var tran = db.UseTran())
        {

            tran.CommitTran();
        }

下载最新代码,用法和EF非常相近了,应该达到你的需求了

John0King commented 3 years ago

辛苦了