zoukankan      html  css  js  c++  java
  • Bitter.Core系列八:Bitter ORM NETCORE ORM 全网最粗暴简单易用高性能的 NETCore 之 事务

    Bitter.Core 编写事务相当简单,Bitter.Core 尽可能的将代码编写量降为最低,例外一方方面保证客户主观能控制代码。Bitter.Core 事务提交,支持Builkcopy事务,原生事务以及多次提交失败回滚,支持新增种子码事务.

    下面附上详细的事务提交 教程--教程Demo 在 案例 Demo 中都有提供 (Github:https://github.com/DavidChild/Bitter.Core.Sample.git):

    /// <summary> /// 事务代码详细教程 /// </summary> public static void DbScopeDemo() { dbscope dbs = new dbscope(); //实例化事务收集器 dbs.dotrancation((list, models, bulkcopymodels) => //说明: dbscope.dotrancation 的参数是一个匿名委托方法 { TGRADEInfo gRadeinfo = new TGRADEInfo(); gRadeinfo.FName = "年级_" + 1; gRadeinfo.FAddTime = DateTime.Now; var gradid = gRadeinfo.AddInScope(models);

    /** * 如果 下面的代码需要用到新增数据库的自增种子ID,并且又需要通过事务执行。怎么办? * 如 上面gRadeinfo是一个年级新增实例,但是下面的 classInfo 是一个班级 新增实例 中的,班级实例中 FGradeId 关联了 gRadeinfo 中的 主键ID。 * 那么新增模型 gRadeinfo 可以通过 db.dotrancation 的匿名委托方法中通过 AddInScope 方法操作, * 在事务中先将先执行gRadeinfo执行插入数据库中,获取到ID,然后将此模型缓存起来, * 如果事务执行失败,那么此模型行将自动执行删除操作! */ if (gradid <= 0) { throw (new Exception("错误:终止事务!")); } TClassInfo classInfo = new TClassInfo(); classInfo.FName = "班级201"; Random rd = new Random(); classInfo.FGradeId = gradid; //使用上面新增的 gRadeinfo 数据库新产生的 自增长主键Id classInfo.FAddTime = DateTime.Now; classInfo.Insert().AddInScope(list); // 塞入 到 list 中-- sqlquery 收集器中 中,等待提交执行 //学生 var count = 20; for (int ci = 0; ci <= count; ci++) { TStudentInfo info = new TStudentInfo(); info.FName = "HJB" + ci; info.FClassId = 2; info.FAddTime = DateTime.Now; Random rdage = new Random(); info.FAage = rdage.Next(16, 20); info.BulkCopy().AddInScope(bulkcopymodels);//塞入 到 bulkcopymodels 中-- bulkcopy 收集器 等待提交执行 } var sqlcommand = "update t_student set FAge=@age"; db.Excut(sqlcommand,new { age=17 }).AddInScope(list); //将裸SQL的操作执行放入 list 中-- sqlquery 收集器中等待执行 var stduent_1 = db.FindQuery<TStudentInfo>().QueryById(50); stduent_1.FAage = 16; stduent_1.Update().AddInScope(list); // 塞入 到 list-- sqlquery 收集器中 中,等待提交执行 var stduent_2 = db.FindQuery<TStudentInfo>().QueryById(51); stduent_2.FAage = 18; stduent_2.Delete().AddInScope(list); // 塞入 到 list-- sqlquery 收集器中 中,等待提交执行 }); bool issuccess= dbs.Submit(); //由用户自主指定何时提交事务 if (issuccess) { //事务提交执行成功 } else { //事务提交失败 string failmessage = dbs.ScopeException.Message; } }

  • 相关阅读:
    Single Number II
    Pascal's Triangle
    Remove Duplicates from Sorted Array
    Populating Next Right Pointers in Each Node
    Minimum Depth of Binary Tree
    Unique Paths
    Sort Colors
    Swap Nodes in Pairs
    Merge Two Sorted Lists
    Climbing Stairs
  • 原文地址:https://www.cnblogs.com/davidchildblog/p/14292255.html
Copyright © 2011-2022 走看看