From 18d0346e4628c8b6de5fba1467ae7f4127d0755e Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Fri, 25 Jan 2019 22:40:19 +0800 Subject: [PATCH] - --- Src/Asp.Net/SqlServerTest/Demos/J_Debugger.cs | 40 ++++++++++--------- Src/Asp.Net/SqlServerTest/Program.cs | 16 +++----- .../Abstract/AdoProvider/AdoProvider.cs | 11 ++--- 3 files changed, 33 insertions(+), 34 deletions(-) diff --git a/Src/Asp.Net/SqlServerTest/Demos/J_Debugger.cs b/Src/Asp.Net/SqlServerTest/Demos/J_Debugger.cs index 0b9682f07..b239f8a84 100644 --- a/Src/Asp.Net/SqlServerTest/Demos/J_Debugger.cs +++ b/Src/Asp.Net/SqlServerTest/Demos/J_Debugger.cs @@ -20,30 +20,34 @@ namespace OrmTest.Demo db.Insertable(new Student() { Name = "a" }).ExecuteCommandAsync(); db.Updateable(new Student() { Name = "a" }).ExecuteCommandAsync(); db.Deleteable(1111).ExecuteCommandAsync(); - try - { - var task = new Task(() => + + var task = new Task(() => + { + try { + //is error + db.Queryable().ToList(); + } + catch (Exception ex) + { + Console.WriteLine(ex.Message); + } - try - { - //error - db.Queryable().ToList(); - } - catch (Exception ex) - { - Console.WriteLine(ex.Message); + }); - } + task.Start(); + task.Wait(); - }); - task.Start(); - task.Wait(); - } - finally + var task2 = new Task(() => { + //is ok + var db2 = GetInstance(); + db2.CurrentConnectionConfig.Debugger = new SqlSugar.SugarDebugger() { EnableThreadSecurityValidation = true }; + db2.Queryable().ToList(); + }); + task2.Start(); + task2.Wait(); - } } diff --git a/Src/Asp.Net/SqlServerTest/Program.cs b/Src/Asp.Net/SqlServerTest/Program.cs index 73907dc3c..ae4c82490 100644 --- a/Src/Asp.Net/SqlServerTest/Program.cs +++ b/Src/Asp.Net/SqlServerTest/Program.cs @@ -1,15 +1,6 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; -using System.Text; -using System.Threading.Tasks; -using System.Linq.Expressions; -using SqlSugar; -using OrmTest.Models; -using System.Data.SqlClient; +using OrmTest.PerformanceTesting; using OrmTest.UnitTest; -using OrmTest.PerformanceTesting; +using System; namespace OrmTest { @@ -62,6 +53,9 @@ namespace OrmTest Demo.Delete.Init(); Demo.InsertOrUpdate.Init(); Demo.Debugger.Init(); + + Console.WriteLine("all successfully."); + Console.ReadKey(); } } } diff --git a/Src/Asp.Net/SqlSugar/Abstract/AdoProvider/AdoProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/AdoProvider/AdoProvider.cs index 213f785bc..b92364e16 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/AdoProvider/AdoProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/AdoProvider/AdoProvider.cs @@ -8,6 +8,7 @@ using System.Linq; using System.Reflection; using System.Text; using System.Text.RegularExpressions; +using System.Threading; using System.Threading.Tasks; namespace SqlSugar { @@ -678,15 +679,15 @@ namespace SqlSugar if (this.Context.IsAsyncMethod==false&&this.Context.CurrentConnectionConfig.Debugger != null && this.Context.CurrentConnectionConfig.Debugger.EnableThreadSecurityValidation == true) { var contextId =this.Context.ContextID.ToString(); - var processId = Process.GetCurrentProcess().Id.ToString(); + var processId = Thread.CurrentThread.ManagedThreadId.ToString(); var cache = new ReflectionInoCacheService(); - if (!cache.ContainsKey(processId)) + if (!cache.ContainsKey(contextId)) { - cache.Add(processId, contextId); + cache.Add(contextId, processId); } else { - var cacheValue = cache.Get(processId); - if (contextId != cacheValue) { + var cacheValue = cache.Get(contextId); + if (processId != cacheValue) { throw new SqlSugarException(this.Context,ErrorMessage.GetThrowMessage("Detection of SqlSugarClient cross-threading usage,a thread needs a new one", "检测到声名的SqlSugarClient跨线程使用,请检查是否静态、是否单例、或者IOC配置错误引起的,保证一个线程new出一个对象 ,具本Sql:")+sql,parameters); } }