IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> SqlSugar 3.数据事务 -> 正文阅读

[游戏开发]SqlSugar 3.数据事务

1.注意事项

MySql注意:

  • MYSQL不支持创建表和删除表处理事务,原生事务也一样
  • MyISAM?存储引擎不支持事务?需要改成?InnoDB

2.单库事务

    static void Main(string[] args)
??????? {
??????????? var db = Sugar.GetInstance();
            
??????????? try
??????????? {
??????????????? db.Ado.BeginTran();
??????????????? db.Insertable(new Student() { Id = "1", Name ="hpf", SchoolId = 1 }).ExecuteCommand();
                
                ?throw new Exception(); //手动抛出异常,回滚Sql
                 
??????????????? db.Ado.CommitTran();
??????????? }
??????????? catch (Exception ex)
??????????? {
??????????????? db.Ado.RollbackTran();
??????????? }
            
??????????? Console.ReadLine();
??????? }

3.调试事务

  • db.ContextId要从事务开始,CURD?和事务结束?必须一致?这个事务才会生效,如果是MYSQL也检查一下表引擎是否支持事务
  • SqlsugarClient?可以用变量 var db=外部Db;?所有操作使用db保证一致
  • SqlsuagrScope (该对象是线程安全对象,可以单例)可以用单例模式保证一致

项目运行起来的时候,在监视中手动输入 db.ContextId ,以便监控值是否保持不变
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WwmKnK9n-1651193424862)(en-resource://database/1605:1)]

4.语法糖

这种适合没有异常处理的,减少了try?处理

    static void Main(string[] args)
??????? {
??????????? var db = Sugar.GetInstance();
??????????? var result = db.UseTran(() =>
??????????? {
??????????????? db.Insertable(new Student() { Id = "2", Name = "hpf", SchoolId= 2 }).ExecuteCommand();
??????????????? //throw new Exception();
??????????????? return true;
??????????? });

??????????? if (result.IsSuccess == false)//事务出现回滚
??????????????? throw result.ErrorException;
??????????? Console.ReadLine();
??????? }

5.异步事务

    public class Program
??? {
??????? static async Task Main(string[] args)
??????? {
??????????? var db = Sugar.GetInstance();
??????????? await Test(db);
??????????? Console.ReadLine();
??????? }


??????? public static async Task Test(SqlSugarClient db)
??????? {
??????????? //异步事务
??????????? var result = await db.UseTranAsync(async () =>
??????????? {
??????????????? await db.Insertable(new Student() { Id = "6", Name = "hpf",SchoolId = 2 }).ExecuteCommandAsync();
??????????????? //throw new Exception();    //手动模拟抛异常
??????????? });

??????????? if (result.IsSuccess == true) 
??????????????? Console.WriteLine("添加成功");
??????????? else 
??????????????? Console.WriteLine("添加失败");
??????? }
??? }

6.设置事务隔离级别

try
{
????db.Ado.BeginTran(IsolationLevel.ReadCommitted);
?????????
????????//业务代码??
?????????
????db.Ado.CommitTran();
}
catch?(Exception?ex)
{
????db.RollbackTran();
????throw?ex;
}

文档参考:数据事务

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-05-01 16:02:57  更:2022-05-01 16:05:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 10:41:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码