From 939bcb100523bc0da32be6895b1535425271903a Mon Sep 17 00:00:00 2001 From: 2881099 <2881099@qq.com> Date: Thu, 7 Sep 2023 11:27:05 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BC=98=E5=8C=96=20ObjectPool=20=E6=81=A2?= =?UTF-8?q?=E5=A4=8D=E5=8F=AF=E7=94=A8=E7=9A=84=E6=97=B6=E6=9C=BA=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Examples/base_entity/Program.cs | 26 +++++++++++++++++------ FreeSql/Internal/ObjectPool/ObjectPool.cs | 5 ++--- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/Examples/base_entity/Program.cs b/Examples/base_entity/Program.cs index dc26208f..44fbb756 100644 --- a/Examples/base_entity/Program.cs +++ b/Examples/base_entity/Program.cs @@ -559,9 +559,9 @@ namespace base_entity //.UseConnectionString(FreeSql.DataType.Firebird, @"database=localhost:D:\fbdata\EXAMPLES.fdb;user=sysdba;password=123456;max pool size=5") //.UseQuoteSqlName(false) - .UseConnectionString(FreeSql.DataType.MySql, "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;Initial Catalog=cccddd;Charset=utf8;SslMode=none;min pool size=1;Max pool size=3;AllowLoadLocalInfile=true") + //.UseConnectionString(FreeSql.DataType.MySql, "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;Initial Catalog=cccddd;Charset=utf8;SslMode=none;min pool size=1;Max pool size=3;AllowLoadLocalInfile=true") - .UseConnectionString(FreeSql.DataType.SqlServer, "Data Source=.;Integrated Security=True;Initial Catalog=freesqlTest;Pooling=true;Max Pool Size=3;TrustServerCertificate=true") + //.UseConnectionString(FreeSql.DataType.SqlServer, "Data Source=.;Integrated Security=True;Initial Catalog=freesqlTest;Pooling=true;Max Pool Size=3;TrustServerCertificate=true") //.UseConnectionString(FreeSql.DataType.PostgreSQL, "Host=192.168.164.10;Port=5432;Username=postgres;Password=123456;Database=tedb;Pooling=true;Maximum Pool Size=2") ////.UseConnectionString(FreeSql.DataType.PostgreSQL, "Host=192.168.164.10;Port=5432;Username=postgres;Password=123456;Database=toc;Pooling=true;Maximum Pool Size=2") @@ -600,6 +600,23 @@ namespace base_entity BaseEntity.Initialization(fsql, () => _asyncUow.Value); #endregion + fsql.Delete().Where("1=1").ExecuteAffrows(); + FreeSql.Internal.Utils.TypeHandlers.TryAdd(typeof(TestIdAndIdentity), new String_TestIdAndIdentity()); + fsql.Insert(new TypeHandler01 { id = Guid.NewGuid(), json = new TestIdAndIdentity { Id = 101, IdentityId = 10101 } }).ExecuteAffrows(); + fsql.Insert(new TypeHandler01 { id = Guid.NewGuid(), json = new TestIdAndIdentity { Id = 102, IdentityId = 10202 } }).ExecuteAffrows(); + + var th01s = fsql.Select().ToList(); + + th01s[0].json = new TestIdAndIdentity { Id = 101, IdentityId = 101011111 }; + fsql.Update().SetSource(th01s[0]).ExecuteAffrows(); + var th01s2 = fsql.Select().ToList(); + + var th01s1json = new TestIdAndIdentity { Id = 101, IdentityId = 33333333 }; + fsql.Update().Set(a => new + { + json = th01s1json + }).Where(a => a.id == th01s[0].id).ExecuteAffrows(); + var th01s3 = fsql.Select().ToList(); var bulkUsers = new[] { new IdentityUser1 { Nickname = "nickname11", Username = "username11" }, @@ -618,11 +635,6 @@ namespace base_entity bulkUsers[2].Nickname += "_bulkupdate"; fsql.Update().SetSource(bulkUsers).ExecuteSqlBulkCopy(); - FreeSql.Internal.Utils.TypeHandlers.TryAdd(typeof(TestIdAndIdentity), new String_TestIdAndIdentity()); - fsql.Insert(new TypeHandler01 { id = Guid.NewGuid(), json = new TestIdAndIdentity { Id = 101, IdentityId = 10101 } }).ExecuteAffrows(); - fsql.Insert(new TypeHandler01 { id = Guid.NewGuid(), json = new TestIdAndIdentity { Id = 102, IdentityId = 10202 } }).ExecuteAffrows(); - - var th01s = fsql.Select().ToList(); var testr1 = fsql.Ado.ExecuteConnectTest(); diff --git a/FreeSql/Internal/ObjectPool/ObjectPool.cs b/FreeSql/Internal/ObjectPool/ObjectPool.cs index 22010054..89b711f9 100644 --- a/FreeSql/Internal/ObjectPool/ObjectPool.cs +++ b/FreeSql/Internal/ObjectPool/ObjectPool.cs @@ -154,6 +154,8 @@ namespace FreeSql.Internal.ObjectPool { if (UnavailableException != null) { + lock (_allObjectsLock) + _allObjects.ForEach(a => a.LastGetTime = a.LastReturnTime = new DateTime(2000, 1, 1)); UnavailableException = null; UnavailableTime = null; AvailableTime = DateTime.Now; @@ -164,9 +166,6 @@ namespace FreeSql.Internal.ObjectPool if (isRestored) { - lock (_allObjectsLock) - _allObjects.ForEach(a => a.LastGetTime = a.LastReturnTime = new DateTime(2000, 1, 1)); - Policy.OnAvailable(); TestTrace.WriteLine($"【{Policy.Name}】Recovered", ConsoleColor.DarkGreen); }