- 优化 ConnectionPool 提升被动连接断开的体验(会卡的可以升级);

This commit is contained in:
28810 2020-03-23 23:17:00 +08:00
parent 487cefebc8
commit a8eaca9e58
17 changed files with 30 additions and 20 deletions

View File

@ -1 +0,0 @@


View File

@ -110,6 +110,13 @@
清空状态数据
</summary>
</member>
<member name="M:FreeSql.DbSet`1.RemoveAsync(System.Linq.Expressions.Expression{System.Func{`0,System.Boolean}})">
<summary>
根据 lambda 条件删除数据
</summary>
<param name="predicate"></param>
<returns></returns>
</member>
<member name="M:FreeSql.DbSet`1.Add(`0)">
<summary>
添加

View File

@ -1036,7 +1036,7 @@
<member name="M:FreeSql.ISelect0`2.ToDictionary``1(System.Func{`1,``0})">
<summary>
以字典的形式返回查询结果<para></para>
注意:字典的特点会导致 OrderBy 排序失效
注意:字典的特点会导致返回的数据无序
</summary>
<typeparam name="TKey"></typeparam>
<param name="keySelector"></param>

View File

@ -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);
}

View File

@ -54,7 +54,7 @@ namespace FreeSql
/// <summary>
/// 以字典的形式返回查询结果<para></para>
/// 注意:字典的特点会导致 OrderBy 排序失效
/// 注意:字典的特点会导致返回的数据无序
/// </summary>
/// <typeparam name="TKey"></typeparam>
/// <param name="keySelector"></param>

View File

@ -182,7 +182,7 @@ namespace FreeSql.MsAccess
public void OnReturn(Object<DbConnection> 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()

View File

@ -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<DbConnection> obj)
{
//if (obj?.Value != null && obj.Value.State != ConnectionState.Closed) try { obj.Value.Close(); } catch { }
}
public void OnAvailable()

View File

@ -198,7 +198,7 @@ namespace FreeSql.Odbc.Dameng
public void OnReturn(Object<DbConnection> obj)
{
//if (obj?.Value != null && obj.Value.State != ConnectionState.Closed) try { obj.Value.Close(); } catch { }
}
public void OnAvailable()

View File

@ -183,7 +183,7 @@ namespace FreeSql.Odbc.Default
public void OnReturn(Object<DbConnection> 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()

View File

@ -176,7 +176,7 @@ namespace FreeSql.Odbc.MySql
public void OnReturn(Object<DbConnection> obj)
{
//if (obj?.Value != null && obj.Value.State != ConnectionState.Closed) try { obj.Value.Close(); } catch { }
}
public void OnAvailable()

View File

@ -198,7 +198,7 @@ namespace FreeSql.Odbc.Oracle
public void OnReturn(Object<DbConnection> obj)
{
//if (obj?.Value != null && obj.Value.State != ConnectionState.Closed) try { obj.Value.Close(); } catch { }
}
public void OnAvailable()

View File

@ -188,7 +188,7 @@ namespace FreeSql.Odbc.PostgreSQL
public void OnReturn(Object<DbConnection> obj)
{
//if (obj?.Value != null && obj.Value.State != ConnectionState.Closed) try { obj.Value.Close(); } catch { }
}
public void OnAvailable()

View File

@ -183,7 +183,7 @@ namespace FreeSql.Odbc.SqlServer
public void OnReturn(Object<DbConnection> 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()

View File

@ -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<DbConnection> obj)
{
//if (obj?.Value != null && obj.Value.State != ConnectionState.Closed) try { obj.Value.Close(); } catch { }
}
public void OnAvailable()

View File

@ -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<DbConnection> obj)
{
//if (obj?.Value != null && obj.Value.State != ConnectionState.Closed) try { obj.Value.Close(); } catch { }
}
public void OnAvailable()

View File

@ -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<DbConnection> 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()

View File

@ -204,7 +204,7 @@ namespace FreeSql.Sqlite
public void OnReturn(Object<DbConnection> obj)
{
//if (obj?.Value != null && obj.Value.State != ConnectionState.Closed) try { obj.Value.Close(); } catch { }
}
public void OnAvailable()