.net 事务死锁测试
1 [TestInitialize] 2 public void Initialize() 3 { 4 //Mis系统配置 5 Util6.Information.Config.CoreConfig.Initialize("Default"); 6 IocHelper.Register<MisConfig>(() => CoreConfig.GetConfigInfo<MisConfig>(new MisSettingService().FindList()), true); 7 8 } 9 10 11 [TestMethod] 12 public void TestDeadLock() 13 { 14 var tasks = new System.Collections.Generic.List<System.Threading.Tasks.Task>(); 15 for (int j = 0; j < 10; j++) 16 { 17 tasks.Add(System.Threading.Tasks.Task.Factory.StartNew((obj) => 18 { 19 var storage = new Util6.Information.Repositorys.MisRepositoryStorage(); 20 using (var db = new DbBuilder(CoreConfig.WriteConfig).KeepConnect()) 21 { 22 try 23 { 24 db.BeginTransaction(); 25 var log = storage.MisLogVisit.UseDatabase(db).Query(m => m.ID == 2).ToEntity(); 26 storage.MisLogVisit.SetEntity(log); 27 log.Oper = "456" + obj; 28 storage.MisLogVisit.UseDatabase(db).Update(); 29 //死锁异常 30 //var logInfo = storage.MisLogVisit.UseDatabase(null).Query().ToCount(); 31 //没有在锁定行查询则没有问题 32 //var logInfo = storage.MisLogVisit.UseDatabase(null).Query(m=>m.ID != 2).ToCount(); 33 //用事务连接的对象则没有问题 34 var logInfo = storage.MisLogVisit.UseDatabase(db).Query().ToCount(); 35 db.CommitTransaction(); 36 } 37 catch (Exception ex) 38 { 39 Console.WriteLine(ex.ToString()); 40 db.RollbackTransaction(); 41 } 42 } 43 }, j)); 44 tasks.Add(System.Threading.Tasks.Task.Factory.StartNew((obj) => 45 { 46 var storage = new Util6.Information.Repositorys.MisRepositoryStorage(); 47 //事务外不会引起死锁异常 48 var logInfo = storage.MisLogVisit.Query().ToCount(); 49 System.Threading.Thread.Sleep(1); 50 }, j)); 51 } 52 System.Threading.Tasks.Task.WaitAll(tasks.ToArray()); 53 Console.WriteLine("end"); 54 }
标签:
sql
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】博客园2025新款「AI繁忙」系列T恤上架,前往周边小店选购
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 日常问题排查-空闲一段时间再请求就超时
· Java虚拟机代码是如何一步一步变复杂且难以理解的?
· 领域驱动的事实与谬误 一 DDD 与 MVC
· SQL Server 2025 中的改进
· 当数据爆炸遇上SQL Server:优化策略全链路解析
· 日常问题排查-空闲一段时间再请求就超时
· C# 14 新增功能一览,你觉得实用吗?
· 揭秘 AI 工具的系统提示词「GitHub 热点速览」
· MySQL同步ES的6种方案!
· 解密AI知识库