From a8eaca9e588513ce4a0dbf566a447d97bef8cbe6 Mon Sep 17 00:00:00 2001 From: 28810 <28810@YEXIANGQIN> Date: Mon, 23 Mar 2020 23:17:00 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BC=98=E5=8C=96=20ConnectionPool=20?= =?UTF-8?q?=E6=8F=90=E5=8D=87=E8=A2=AB=E5=8A=A8=E8=BF=9E=E6=8E=A5=E6=96=AD?= =?UTF-8?q?=E5=BC=80=E7=9A=84=E4=BD=93=E9=AA=8C=EF=BC=88=E4=BC=9A=E5=8D=A1?= =?UTF-8?q?=E7=9A=84=E5=8F=AF=E4=BB=A5=E5=8D=87=E7=BA=A7=EF=BC=89=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Examples/base_entity/Entities/Class1.cs | 1 - FreeSql.DbContext/FreeSql.DbContext.xml | 7 +++++++ FreeSql/FreeSql.xml | 2 +- FreeSql/FreeUtil.cs | 2 +- FreeSql/Interface/Curd/ISelect/ISelect0.cs | 2 +- .../MsAccessAdo/MsAccessConnectionPool.cs | 2 +- .../FreeSql.Provider.MySql/MySqlAdo/MySqlConnectionPool.cs | 5 +++-- .../Dameng/OdbcDamengAdo/OdbcDamengConnectionPool.cs | 2 +- .../Default/OdbcAdo/OdbcConnectionPool.cs | 2 +- .../MySql/OdbcMySqlAdo/OdbcMySqlConnectionPool.cs | 2 +- .../Oracle/OdbcOracleAdo/OdbcOracleConnectionPool.cs | 2 +- .../OdbcPostgreSQLAdo/OdbcPostgreSQLConnectionPool.cs | 2 +- .../OdbcSqlServerAdo/OdbcSqlServerConnectionPool.cs | 2 +- .../OracleAdo/OracleConnectionPool.cs | 5 +++-- .../PostgreSQLAdo/PostgreSQLConnectionPool.cs | 5 +++-- .../SqlServerAdo/SqlServerConnectionPool.cs | 5 +++-- .../SqliteAdo/SqliteConnectionPool.cs | 2 +- 17 files changed, 30 insertions(+), 20 deletions(-) delete mode 100644 Examples/base_entity/Entities/Class1.cs diff --git a/Examples/base_entity/Entities/Class1.cs b/Examples/base_entity/Entities/Class1.cs deleted file mode 100644 index 5f282702..00000000 --- a/Examples/base_entity/Entities/Class1.cs +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/FreeSql.DbContext/FreeSql.DbContext.xml b/FreeSql.DbContext/FreeSql.DbContext.xml index 2735cefb..ca7c357b 100644 --- a/FreeSql.DbContext/FreeSql.DbContext.xml +++ b/FreeSql.DbContext/FreeSql.DbContext.xml @@ -110,6 +110,13 @@ 清空状态数据 + + + 根据 lambda 条件删除数据 + + + + 添加 diff --git a/FreeSql/FreeSql.xml b/FreeSql/FreeSql.xml index cf900d20..68ddd4ef 100644 --- a/FreeSql/FreeSql.xml +++ b/FreeSql/FreeSql.xml @@ -1036,7 +1036,7 @@ 以字典的形式返回查询结果 - 注意:字典的特点会导致 OrderBy 排序失效 + 注意:字典的特点会导致返回的数据无序 diff --git a/FreeSql/FreeUtil.cs b/FreeSql/FreeUtil.cs index 37e928c9..79c29827 100644 --- a/FreeSql/FreeUtil.cs +++ b/FreeSql/FreeUtil.cs @@ -32,7 +32,7 @@ public static class FreeUtil var uninxtime = (int)now.Subtract(dt1970).TotalSeconds; int increment = Interlocked.Increment(ref __staticIncrement) & 0x00ffffff; var rand = rnd.Value.Next(0, int.MaxValue); - var guid = $"{uninxtime.ToString("x8").PadLeft(8, '0')}{__staticMachine.ToString("x8").PadLeft(8, '0').Substring(2, 6)}{__staticPid.ToString("x8").PadLeft(8, '0').Substring(6, 2)}{increment.ToString("x8").PadLeft(8, '0')}{rand.ToString("x8").PadLeft(8, '0')}"; + var guid = $"{uninxtime.ToString("x8").PadLeft(8, '0')}{rand.ToString("x8").PadLeft(8, '0')}{__staticMachine.ToString("x8").PadLeft(8, '0').Substring(2, 6)}{__staticPid.ToString("x8").PadLeft(8, '0').Substring(6, 2)}{increment.ToString("x8").PadLeft(8, '0')}"; return Guid.Parse(guid); } diff --git a/FreeSql/Interface/Curd/ISelect/ISelect0.cs b/FreeSql/Interface/Curd/ISelect/ISelect0.cs index a9a98620..80a3ca55 100644 --- a/FreeSql/Interface/Curd/ISelect/ISelect0.cs +++ b/FreeSql/Interface/Curd/ISelect/ISelect0.cs @@ -54,7 +54,7 @@ namespace FreeSql /// /// 以字典的形式返回查询结果 - /// 注意:字典的特点会导致 OrderBy 排序失效 + /// 注意:字典的特点会导致返回的数据无序 /// /// /// diff --git a/Providers/FreeSql.Provider.MsAccess/MsAccessAdo/MsAccessConnectionPool.cs b/Providers/FreeSql.Provider.MsAccess/MsAccessAdo/MsAccessConnectionPool.cs index b59384bc..c4d429f7 100644 --- a/Providers/FreeSql.Provider.MsAccess/MsAccessAdo/MsAccessConnectionPool.cs +++ b/Providers/FreeSql.Provider.MsAccess/MsAccessAdo/MsAccessConnectionPool.cs @@ -182,7 +182,7 @@ namespace FreeSql.MsAccess public void OnReturn(Object obj) { - if (obj.Value.State != ConnectionState.Closed) try { obj.Value.Close(); } catch { } + //if (obj?.Value != null && obj.Value.State != ConnectionState.Closed) try { obj.Value.Close(); } catch { } } public void OnAvailable() diff --git a/Providers/FreeSql.Provider.MySql/MySqlAdo/MySqlConnectionPool.cs b/Providers/FreeSql.Provider.MySql/MySqlAdo/MySqlConnectionPool.cs index 88479d75..5c3fa614 100644 --- a/Providers/FreeSql.Provider.MySql/MySqlAdo/MySqlConnectionPool.cs +++ b/Providers/FreeSql.Provider.MySql/MySqlAdo/MySqlConnectionPool.cs @@ -106,7 +106,8 @@ namespace FreeSql.MySql public void OnDestroy(DbConnection obj) { - if (obj.State != ConnectionState.Closed) obj.Close(); + try { if (obj.State != ConnectionState.Closed) obj.Close(); } catch { } + try { MySqlConnection.ClearPool(obj as MySqlConnection); } catch { } obj.Dispose(); } @@ -176,7 +177,7 @@ namespace FreeSql.MySql public void OnReturn(Object obj) { - + //if (obj?.Value != null && obj.Value.State != ConnectionState.Closed) try { obj.Value.Close(); } catch { } } public void OnAvailable() diff --git a/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengAdo/OdbcDamengConnectionPool.cs b/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengAdo/OdbcDamengConnectionPool.cs index 01fabe40..919c9d6b 100644 --- a/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengAdo/OdbcDamengConnectionPool.cs +++ b/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengAdo/OdbcDamengConnectionPool.cs @@ -198,7 +198,7 @@ namespace FreeSql.Odbc.Dameng public void OnReturn(Object obj) { - + //if (obj?.Value != null && obj.Value.State != ConnectionState.Closed) try { obj.Value.Close(); } catch { } } public void OnAvailable() diff --git a/Providers/FreeSql.Provider.Odbc/Default/OdbcAdo/OdbcConnectionPool.cs b/Providers/FreeSql.Provider.Odbc/Default/OdbcAdo/OdbcConnectionPool.cs index fb9c6a2f..3379c7b0 100644 --- a/Providers/FreeSql.Provider.Odbc/Default/OdbcAdo/OdbcConnectionPool.cs +++ b/Providers/FreeSql.Provider.Odbc/Default/OdbcAdo/OdbcConnectionPool.cs @@ -183,7 +183,7 @@ namespace FreeSql.Odbc.Default public void OnReturn(Object obj) { - if (obj.Value.State != ConnectionState.Closed) try { obj.Value.Close(); } catch { } + //if (obj?.Value != null && obj.Value.State != ConnectionState.Closed) try { obj.Value.Close(); } catch { } } public void OnAvailable() diff --git a/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlAdo/OdbcMySqlConnectionPool.cs b/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlAdo/OdbcMySqlConnectionPool.cs index 45188f84..361de661 100644 --- a/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlAdo/OdbcMySqlConnectionPool.cs +++ b/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlAdo/OdbcMySqlConnectionPool.cs @@ -176,7 +176,7 @@ namespace FreeSql.Odbc.MySql public void OnReturn(Object obj) { - + //if (obj?.Value != null && obj.Value.State != ConnectionState.Closed) try { obj.Value.Close(); } catch { } } public void OnAvailable() diff --git a/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleAdo/OdbcOracleConnectionPool.cs b/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleAdo/OdbcOracleConnectionPool.cs index 04215901..cf65c0a4 100644 --- a/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleAdo/OdbcOracleConnectionPool.cs +++ b/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleAdo/OdbcOracleConnectionPool.cs @@ -198,7 +198,7 @@ namespace FreeSql.Odbc.Oracle public void OnReturn(Object obj) { - + //if (obj?.Value != null && obj.Value.State != ConnectionState.Closed) try { obj.Value.Close(); } catch { } } public void OnAvailable() diff --git a/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLAdo/OdbcPostgreSQLConnectionPool.cs b/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLAdo/OdbcPostgreSQLConnectionPool.cs index 2b36f586..4b4b0634 100644 --- a/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLAdo/OdbcPostgreSQLConnectionPool.cs +++ b/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLAdo/OdbcPostgreSQLConnectionPool.cs @@ -188,7 +188,7 @@ namespace FreeSql.Odbc.PostgreSQL public void OnReturn(Object obj) { - + //if (obj?.Value != null && obj.Value.State != ConnectionState.Closed) try { obj.Value.Close(); } catch { } } public void OnAvailable() diff --git a/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerAdo/OdbcSqlServerConnectionPool.cs b/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerAdo/OdbcSqlServerConnectionPool.cs index fb70774a..a66af427 100644 --- a/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerAdo/OdbcSqlServerConnectionPool.cs +++ b/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerAdo/OdbcSqlServerConnectionPool.cs @@ -183,7 +183,7 @@ namespace FreeSql.Odbc.SqlServer public void OnReturn(Object obj) { - if (obj.Value.State != ConnectionState.Closed) try { obj.Value.Close(); } catch { } + //if (obj?.Value != null && obj.Value.State != ConnectionState.Closed) try { obj.Value.Close(); } catch { } } public void OnAvailable() diff --git a/Providers/FreeSql.Provider.Oracle/OracleAdo/OracleConnectionPool.cs b/Providers/FreeSql.Provider.Oracle/OracleAdo/OracleConnectionPool.cs index 9f40af14..3dc769fd 100644 --- a/Providers/FreeSql.Provider.Oracle/OracleAdo/OracleConnectionPool.cs +++ b/Providers/FreeSql.Provider.Oracle/OracleAdo/OracleConnectionPool.cs @@ -128,7 +128,8 @@ namespace FreeSql.Oracle public void OnDestroy(DbConnection obj) { - if (obj.State != ConnectionState.Closed) obj.Close(); + try { if (obj.State != ConnectionState.Closed) obj.Close(); } catch { } + try { OracleConnection.ClearPool(obj as OracleConnection); } catch { } obj.Dispose(); } @@ -198,7 +199,7 @@ namespace FreeSql.Oracle public void OnReturn(Object obj) { - + //if (obj?.Value != null && obj.Value.State != ConnectionState.Closed) try { obj.Value.Close(); } catch { } } public void OnAvailable() diff --git a/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLAdo/PostgreSQLConnectionPool.cs b/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLAdo/PostgreSQLConnectionPool.cs index 6fc4d7fe..d6d6f29f 100644 --- a/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLAdo/PostgreSQLConnectionPool.cs +++ b/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLAdo/PostgreSQLConnectionPool.cs @@ -118,7 +118,8 @@ namespace FreeSql.PostgreSQL public void OnDestroy(DbConnection obj) { - if (obj.State != ConnectionState.Closed) obj.Close(); + try { if (obj.State != ConnectionState.Closed) obj.Close(); } catch { } + try { NpgsqlConnection.ClearPool(obj as NpgsqlConnection); } catch { } obj.Dispose(); } @@ -188,7 +189,7 @@ namespace FreeSql.PostgreSQL public void OnReturn(Object obj) { - + //if (obj?.Value != null && obj.Value.State != ConnectionState.Closed) try { obj.Value.Close(); } catch { } } public void OnAvailable() diff --git a/Providers/FreeSql.Provider.SqlServer/SqlServerAdo/SqlServerConnectionPool.cs b/Providers/FreeSql.Provider.SqlServer/SqlServerAdo/SqlServerConnectionPool.cs index a58f8940..4cba9ac5 100644 --- a/Providers/FreeSql.Provider.SqlServer/SqlServerAdo/SqlServerConnectionPool.cs +++ b/Providers/FreeSql.Provider.SqlServer/SqlServerAdo/SqlServerConnectionPool.cs @@ -111,7 +111,8 @@ namespace FreeSql.SqlServer public void OnDestroy(DbConnection obj) { - if (obj.State != ConnectionState.Closed) obj.Close(); + try { if (obj.State != ConnectionState.Closed) obj.Close(); } catch { } + try { SqlConnection.ClearPool(obj as SqlConnection); } catch { } obj.Dispose(); } @@ -181,7 +182,7 @@ namespace FreeSql.SqlServer public void OnReturn(Object obj) { - if (obj.Value.State != ConnectionState.Closed) try { obj.Value.Close(); } catch { } + //if (obj?.Value != null && obj.Value.State != ConnectionState.Closed) try { obj.Value.Close(); } catch { } } public void OnAvailable() diff --git a/Providers/FreeSql.Provider.Sqlite/SqliteAdo/SqliteConnectionPool.cs b/Providers/FreeSql.Provider.Sqlite/SqliteAdo/SqliteConnectionPool.cs index f2275191..2ed75b19 100644 --- a/Providers/FreeSql.Provider.Sqlite/SqliteAdo/SqliteConnectionPool.cs +++ b/Providers/FreeSql.Provider.Sqlite/SqliteAdo/SqliteConnectionPool.cs @@ -204,7 +204,7 @@ namespace FreeSql.Sqlite public void OnReturn(Object obj) { - + //if (obj?.Value != null && obj.Value.State != ConnectionState.Closed) try { obj.Value.Close(); } catch { } } public void OnAvailable()