From 766fe901d70ab07eff55f295a7331d4ec923f9d3 Mon Sep 17 00:00:00 2001 From: 28810 <28810@YEXIANGQIN> Date: Fri, 8 Mar 2019 12:10:32 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BC=98=E5=8C=96=20=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E6=97=B6=E8=8B=A5=E6=95=B0=E6=8D=AE=E5=BA=93=E8=B6=85?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E5=88=99=E6=94=BE=E5=BC=83=E9=A2=84=E7=83=AD?= =?UTF-8?q?=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FreeSql/MySql/MySqlAdo/MySqlConnectionPool.cs | 12 ++++++++++-- FreeSql/Oracle/OracleAdo/OracleConnectionPool.cs | 11 +++++++++-- .../PostgreSQLAdo/PostgreSQLConnectionPool.cs | 11 +++++++++-- .../SqlServerAdo/SqlServerConnectionPool.cs | 12 ++++++++++-- FreeSql/Sqlite/SqliteAdo/SqliteConnectionPool.cs | 11 +++++++++-- 5 files changed, 47 insertions(+), 10 deletions(-) diff --git a/FreeSql/MySql/MySqlAdo/MySqlConnectionPool.cs b/FreeSql/MySql/MySqlAdo/MySqlConnectionPool.cs index 41355ae3..ac677353 100644 --- a/FreeSql/MySql/MySqlAdo/MySqlConnectionPool.cs +++ b/FreeSql/MySql/MySqlAdo/MySqlConnectionPool.cs @@ -2,6 +2,7 @@ using SafeObjectPool; using System; using System.Collections.Concurrent; +using System.Collections.Generic; using System.Data; using System.Data.Common; using System.Text.RegularExpressions; @@ -59,8 +60,15 @@ namespace FreeSql.MySql { Regex.Replace(connStr, poolsizePatern, $"Max pool size={PoolSize}", RegexOptions.IgnoreCase) : $"{connStr};Max pool size={PoolSize}"; - var initConns = new Object[poolsize]; - for (var a = 0; a < poolsize; a++) try { initConns[a] = _pool.Get(); } catch { } + var initConns = new List>(); + for (var a = 0; a < PoolSize; a++) + try { + var conn = _pool.Get(); + initConns.Add(conn); + conn.Value.Ping(true); + } catch { + break; //预热失败一次就退出 + } foreach (var conn in initConns) _pool.Return(conn); } } diff --git a/FreeSql/Oracle/OracleAdo/OracleConnectionPool.cs b/FreeSql/Oracle/OracleAdo/OracleConnectionPool.cs index e108a45a..067baef2 100644 --- a/FreeSql/Oracle/OracleAdo/OracleConnectionPool.cs +++ b/FreeSql/Oracle/OracleAdo/OracleConnectionPool.cs @@ -74,8 +74,15 @@ namespace FreeSql.Oracle { Regex.Replace(connStr, poolsizePatern, $"Max pool size={PoolSize}", RegexOptions.IgnoreCase) : $"{connStr};Max pool size={PoolSize}"; - var initConns = new Object[poolsize]; - for (var a = 0; a < poolsize; a++) try { initConns[a] = _pool.Get(); } catch { } + var initConns = new List>(); + for (var a = 0; a < PoolSize; a++) + try { + var conn = _pool.Get(); + initConns.Add(conn); + conn.Value.Ping(true); + } catch { + break; //预热失败一次就退出 + } foreach (var conn in initConns) _pool.Return(conn); } } diff --git a/FreeSql/PostgreSQL/PostgreSQLAdo/PostgreSQLConnectionPool.cs b/FreeSql/PostgreSQL/PostgreSQLAdo/PostgreSQLConnectionPool.cs index 3c8f842c..1100a6e5 100644 --- a/FreeSql/PostgreSQL/PostgreSQLAdo/PostgreSQLConnectionPool.cs +++ b/FreeSql/PostgreSQL/PostgreSQLAdo/PostgreSQLConnectionPool.cs @@ -69,8 +69,15 @@ namespace FreeSql.PostgreSQL { Regex.Replace(connStr, poolsizePatern, $"Maximum pool size={PoolSize}", RegexOptions.IgnoreCase) : $"{connStr};Maximum pool size={PoolSize}"; - var initConns = new Object[poolsize]; - for (var a = 0; a < poolsize; a++) try { initConns[a] = _pool.Get(); } catch { } + var initConns = new List>(); + for (var a = 0; a < PoolSize; a++) + try { + var conn = _pool.Get(); + initConns.Add(conn); + conn.Value.Ping(true); + } catch { + break; //预热失败一次就退出 + } foreach (var conn in initConns) _pool.Return(conn); } } diff --git a/FreeSql/SqlServer/SqlServerAdo/SqlServerConnectionPool.cs b/FreeSql/SqlServer/SqlServerAdo/SqlServerConnectionPool.cs index b53f258c..29119c03 100644 --- a/FreeSql/SqlServer/SqlServerAdo/SqlServerConnectionPool.cs +++ b/FreeSql/SqlServer/SqlServerAdo/SqlServerConnectionPool.cs @@ -1,6 +1,7 @@ using SafeObjectPool; using System; using System.Collections.Concurrent; +using System.Collections.Generic; using System.Data; using System.Data.Common; using System.Data.SqlClient; @@ -63,8 +64,15 @@ namespace FreeSql.SqlServer { Regex.Replace(connStr, poolsizePatern, $"Max pool size={PoolSize}", RegexOptions.IgnoreCase) : $"{connStr};Max pool size={PoolSize}"; - var initConns = new Object[poolsize]; - for (var a = 0; a < poolsize; a++) try { initConns[a] = _pool.Get(); } catch { } + var initConns = new List>(); + for (var a = 0; a < PoolSize; a++) + try { + var conn = _pool.Get(); + initConns.Add(conn); + conn.Value.Ping(true); + } catch { + break; //预热失败一次就退出 + } foreach (var conn in initConns) _pool.Return(conn); } } diff --git a/FreeSql/Sqlite/SqliteAdo/SqliteConnectionPool.cs b/FreeSql/Sqlite/SqliteAdo/SqliteConnectionPool.cs index da0c9514..4dda5649 100644 --- a/FreeSql/Sqlite/SqliteAdo/SqliteConnectionPool.cs +++ b/FreeSql/Sqlite/SqliteAdo/SqliteConnectionPool.cs @@ -71,8 +71,15 @@ namespace FreeSql.Sqlite { Attaches = (idx == -1 ? att[1] : att[1].Substring(0, idx)).Split(','); } - var initConns = new Object[poolsize]; - for (var a = 0; a < poolsize; a++) try { initConns[a] = _pool.Get(); } catch { } + var initConns = new List>(); + for (var a = 0; a < PoolSize; a++) + try { + var conn = _pool.Get(); + initConns.Add(conn); + conn.Value.Ping(true); + } catch { + break; //预热失败一次就退出 + } foreach (var conn in initConns) _pool.Return(conn); } }