mirror of
https://github.com/dotnetcore/FreeSql.git
synced 2026-02-09 09:50:54 +08:00
- 补充 ObjectPool Async CancellationToken 参数;#2177
This commit is contained in:
@@ -69,11 +69,11 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public Task<Object<DbConnection>> GetAsync()
|
async public Task<Object<DbConnection>> GetAsync(CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
var conn = _connectionFactory();
|
var conn = _connectionFactory();
|
||||||
if (conn.State != ConnectionState.Open)
|
if (conn.State != ConnectionState.Open)
|
||||||
await conn.OpenAsync();
|
await conn.OpenAsync(cancellationToken);
|
||||||
return Object<DbConnection>.InitWith(this, Interlocked.Increment(ref _id), conn);
|
return Object<DbConnection>.InitWith(this, Interlocked.Increment(ref _id), conn);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -128,11 +128,11 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public Task<Object<DbConnection>> GetAsync()
|
async public Task<Object<DbConnection>> GetAsync(CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
var conn = _connectionFactory();
|
var conn = _connectionFactory();
|
||||||
if (conn.State != ConnectionState.Open)
|
if (conn.State != ConnectionState.Open)
|
||||||
await conn.OpenAsync();
|
await conn.OpenAsync(cancellationToken);
|
||||||
return Object<DbConnection>.InitWith(this, Interlocked.Increment(ref _id), conn);
|
return Object<DbConnection>.InitWith(this, Interlocked.Increment(ref _id), conn);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -195,7 +195,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
public Task OnGetAsync(Object<DbConnection> obj)
|
public Task OnGetAsync(Object<DbConnection> obj, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
return Task.FromResult(true);
|
return Task.FromResult(true);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace FreeSql.Internal.ObjectPool
|
namespace FreeSql.Internal.ObjectPool
|
||||||
@@ -49,7 +50,7 @@ namespace FreeSql.Internal.ObjectPool
|
|||||||
/// 获取资源
|
/// 获取资源
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<Object<T>> GetAsync();
|
Task<Object<T>> GetAsync(CancellationToken cancellationToken = default);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace FreeSql.Internal.ObjectPool
|
namespace FreeSql.Internal.ObjectPool
|
||||||
@@ -81,7 +82,7 @@ namespace FreeSql.Internal.ObjectPool
|
|||||||
/// 从对象池获取对象成功的时候触发,通过该方法统计或初始化对象
|
/// 从对象池获取对象成功的时候触发,通过该方法统计或初始化对象
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="obj">资源对象</param>
|
/// <param name="obj">资源对象</param>
|
||||||
Task OnGetAsync(Object<T> obj);
|
Task OnGetAsync(Object<T> obj, CancellationToken cancellationToken);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -366,7 +366,7 @@ namespace FreeSql.Internal.ObjectPool
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public Task<Object<T>> GetAsync()
|
async public Task<Object<T>> GetAsync(CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
var obj = GetFree(true);
|
var obj = GetFree(true);
|
||||||
if (obj == null)
|
if (obj == null)
|
||||||
@@ -400,7 +400,7 @@ namespace FreeSql.Internal.ObjectPool
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await Policy.OnGetAsync(obj);
|
await Policy.OnGetAsync(obj, cancellationToken);
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
using FreeSql.Internal.ObjectPool;
|
using ClickHouse.Driver.ADO;
|
||||||
|
using FreeSql.Internal.ObjectPool;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using System.Data.Common;
|
using System.Data.Common;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using ClickHouse.Driver.ADO;
|
|
||||||
|
|
||||||
namespace FreeSql.ClickHouse
|
namespace FreeSql.ClickHouse
|
||||||
{
|
{
|
||||||
@@ -154,7 +154,7 @@ namespace FreeSql.ClickHouse
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public Task OnGetAsync(Object<DbConnection> obj)
|
async public Task OnGetAsync(Object<DbConnection> obj, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (_pool.IsAvailable)
|
if (_pool.IsAvailable)
|
||||||
@@ -165,12 +165,12 @@ namespace FreeSql.ClickHouse
|
|||||||
throw new Exception(CoreErrorStrings.S_ConnectionStringError_Check(this.Name));
|
throw new Exception(CoreErrorStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync(false, cancellationToken)) == false)
|
||||||
{
|
{
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await obj.Value.OpenAsync();
|
await obj.Value.OpenAsync(cancellationToken);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -231,11 +231,11 @@ namespace FreeSql.ClickHouse
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public static Task<bool> PingAsync(this DbConnection that, bool isThrow = false)
|
async public static Task<bool> PingAsync(this DbConnection that, bool isThrow = false, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await PingCommand(that).ExecuteNonQueryAsync();
|
await PingCommand(that).ExecuteNonQueryAsync(cancellationToken);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ using System.Collections.Concurrent;
|
|||||||
using System.Data;
|
using System.Data;
|
||||||
using System.Data.Common;
|
using System.Data.Common;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace FreeSql.Dameng
|
namespace FreeSql.Dameng
|
||||||
@@ -153,7 +154,7 @@ namespace FreeSql.Dameng
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public Task OnGetAsync(Object<DbConnection> obj)
|
async public Task OnGetAsync(Object<DbConnection> obj, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (_pool.IsAvailable)
|
if (_pool.IsAvailable)
|
||||||
@@ -164,12 +165,12 @@ namespace FreeSql.Dameng
|
|||||||
throw new Exception(CoreErrorStrings.S_ConnectionStringError_Check(this.Name));
|
throw new Exception(CoreErrorStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync(false, cancellationToken)) == false)
|
||||||
{
|
{
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await obj.Value.OpenAsync();
|
await obj.Value.OpenAsync(cancellationToken);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -230,11 +231,11 @@ namespace FreeSql.Dameng
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public static Task<bool> PingAsync(this DbConnection that, bool isThrow = false)
|
async public static Task<bool> PingAsync(this DbConnection that, bool isThrow = false, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await PingCommand(that).ExecuteNonQueryAsync();
|
await PingCommand(that).ExecuteNonQueryAsync(cancellationToken);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ using System.Data.Common;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace FreeSql.Duckdb
|
namespace FreeSql.Duckdb
|
||||||
@@ -126,7 +127,7 @@ namespace FreeSql.Duckdb
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public Task OnGetAsync(Object<DbConnection> obj)
|
async public Task OnGetAsync(Object<DbConnection> obj, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (_pool.IsAvailable)
|
if (_pool.IsAvailable)
|
||||||
@@ -135,7 +136,7 @@ namespace FreeSql.Duckdb
|
|||||||
throw new Exception(CoreErrorStrings.S_ConnectionStringError_Check(this.Name));
|
throw new Exception(CoreErrorStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open)
|
if (obj.Value.State != ConnectionState.Open)
|
||||||
await obj.Value.OpenAndAttachAsync(Attaches);
|
await obj.Value.OpenAndAttachAsync(Attaches, cancellationToken);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -206,26 +207,9 @@ namespace FreeSql.Duckdb
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public static Task<bool> PingAsync(this DbConnection that, bool isThrow = false)
|
async public static Task OpenAndAttachAsync(this DbConnection that, string[] attach, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
try
|
await that.OpenAsync(cancellationToken);
|
||||||
{
|
|
||||||
using (var cmd = PingCommand(that))
|
|
||||||
{
|
|
||||||
await cmd.ExecuteNonQueryAsync();
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
if (that.State != ConnectionState.Closed) try { that.Close(); } catch { }
|
|
||||||
if (isThrow) throw;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
async public static Task OpenAndAttachAsync(this DbConnection that, string[] attach)
|
|
||||||
{
|
|
||||||
await that.OpenAsync();
|
|
||||||
|
|
||||||
if (attach?.Any() == true)
|
if (attach?.Any() == true)
|
||||||
{
|
{
|
||||||
@@ -235,7 +219,7 @@ namespace FreeSql.Duckdb
|
|||||||
|
|
||||||
var cmd = that.CreateCommand();
|
var cmd = that.CreateCommand();
|
||||||
cmd.CommandText = sb.ToString();
|
cmd.CommandText = sb.ToString();
|
||||||
await cmd.ExecuteNonQueryAsync();
|
await cmd.ExecuteNonQueryAsync(cancellationToken);
|
||||||
cmd.Dispose();
|
cmd.Dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,10 +2,10 @@
|
|||||||
using FreeSql.Internal.ObjectPool;
|
using FreeSql.Internal.ObjectPool;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using System.Data.Common;
|
using System.Data.Common;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace FreeSql.Firebird
|
namespace FreeSql.Firebird
|
||||||
@@ -124,7 +124,7 @@ namespace FreeSql.Firebird
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public Task OnGetAsync(Object<DbConnection> obj)
|
async public Task OnGetAsync(Object<DbConnection> obj, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (_pool.IsAvailable)
|
if (_pool.IsAvailable)
|
||||||
@@ -133,7 +133,7 @@ namespace FreeSql.Firebird
|
|||||||
throw new Exception(CoreErrorStrings.S_ConnectionStringError_Check(this.Name));
|
throw new Exception(CoreErrorStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open)
|
if (obj.Value.State != ConnectionState.Open)
|
||||||
await obj.Value.OpenAsync();
|
await obj.Value.OpenAsync(cancellationToken);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -183,23 +183,5 @@ namespace FreeSql.Firebird
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if net40
|
|
||||||
#else
|
|
||||||
async public static Task<bool> PingAsync(this DbConnection that, bool isThrow = false)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
await PingCommand(that).ExecuteNonQueryAsync();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
if (that.State != ConnectionState.Closed) try { that.Close(); } catch { }
|
|
||||||
if (isThrow) throw;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
using FreeSql.Internal.ObjectPool;
|
using FreeSql.Internal.ObjectPool;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using System.Data.Common;
|
using System.Data.Common;
|
||||||
using System.Data.Odbc;
|
using System.Data.Odbc;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace FreeSql.GBase
|
namespace FreeSql.GBase
|
||||||
@@ -143,7 +143,7 @@ namespace FreeSql.GBase
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public Task OnGetAsync(Object<DbConnection> obj)
|
async public Task OnGetAsync(Object<DbConnection> obj, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (_pool.IsAvailable)
|
if (_pool.IsAvailable)
|
||||||
@@ -154,12 +154,12 @@ namespace FreeSql.GBase
|
|||||||
throw new Exception(CoreErrorStrings.S_ConnectionStringError_Check(this.Name));
|
throw new Exception(CoreErrorStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync(false, cancellationToken)) == false)
|
||||||
{
|
{
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await obj.Value.OpenAsync();
|
await obj.Value.OpenAsync(cancellationToken);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -220,11 +220,11 @@ namespace FreeSql.GBase
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public static Task<bool> PingAsync(this DbConnection that, bool isThrow = false)
|
async public static Task<bool> PingAsync(this DbConnection that, bool isThrow = false, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await PingCommand(that).ExecuteNonQueryAsync();
|
await PingCommand(that).ExecuteNonQueryAsync(cancellationToken);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
|
|||||||
@@ -2,11 +2,10 @@
|
|||||||
using Kdbndp;
|
using Kdbndp;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using System.Data.Common;
|
using System.Data.Common;
|
||||||
using System.Text;
|
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace FreeSql.KingbaseES
|
namespace FreeSql.KingbaseES
|
||||||
@@ -154,7 +153,7 @@ namespace FreeSql.KingbaseES
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public Task OnGetAsync(Object<DbConnection> obj)
|
async public Task OnGetAsync(Object<DbConnection> obj, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (_pool.IsAvailable)
|
if (_pool.IsAvailable)
|
||||||
@@ -165,12 +164,12 @@ namespace FreeSql.KingbaseES
|
|||||||
throw new Exception(CoreErrorStrings.S_ConnectionStringError_Check(this.Name));
|
throw new Exception(CoreErrorStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync(false, cancellationToken)) == false)
|
||||||
{
|
{
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await obj.Value.OpenAsync();
|
await obj.Value.OpenAsync(cancellationToken);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -231,11 +230,11 @@ namespace FreeSql.KingbaseES
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public static Task<bool> PingAsync(this DbConnection that, bool isThrow = false)
|
async public static Task<bool> PingAsync(this DbConnection that, bool isThrow = false, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await PingCommand(that).ExecuteNonQueryAsync();
|
await PingCommand(that).ExecuteNonQueryAsync(cancellationToken);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
using FreeSql.Internal.ObjectPool;
|
using FreeSql.Internal.ObjectPool;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Concurrent;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using System.Data.Common;
|
using System.Data.Common;
|
||||||
using System.Data.OleDb;
|
using System.Data.OleDb;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace FreeSql.MsAccess
|
namespace FreeSql.MsAccess
|
||||||
@@ -123,7 +122,7 @@ namespace FreeSql.MsAccess
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public Task OnGetAsync(Object<DbConnection> obj)
|
async public Task OnGetAsync(Object<DbConnection> obj, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (_pool.IsAvailable)
|
if (_pool.IsAvailable)
|
||||||
@@ -133,7 +132,7 @@ namespace FreeSql.MsAccess
|
|||||||
throw new Exception(CoreErrorStrings.S_ConnectionStringError_Check(this.Name));
|
throw new Exception(CoreErrorStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open)
|
if (obj.Value.State != ConnectionState.Open)
|
||||||
await obj.Value.OpenAsync();
|
await obj.Value.OpenAsync(cancellationToken);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -183,23 +182,5 @@ namespace FreeSql.MsAccess
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if net40
|
|
||||||
#else
|
|
||||||
async public static Task<bool> PingAsync(this DbConnection that, bool isThrow = false)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
await PingCommand(that).ExecuteNonQueryAsync();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
if (that.State != ConnectionState.Closed) try { that.Close(); } catch { }
|
|
||||||
if (isThrow) throw;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
using FreeSql.Internal.ObjectPool;
|
using FreeSql.Internal.ObjectPool;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using System.Data.Common;
|
using System.Data.Common;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using System.Threading;
|
||||||
|
|
||||||
#if MySqlConnector
|
#if MySqlConnector
|
||||||
using MySqlConnector;
|
using MySqlConnector;
|
||||||
#else
|
#else
|
||||||
@@ -148,7 +149,7 @@ namespace FreeSql.MySql
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public Task OnGetAsync(Object<DbConnection> obj)
|
async public Task OnGetAsync(Object<DbConnection> obj, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (_pool.IsAvailable)
|
if (_pool.IsAvailable)
|
||||||
@@ -159,12 +160,12 @@ namespace FreeSql.MySql
|
|||||||
throw new Exception(CoreErrorStrings.S_ConnectionStringError_Check(this.Name));
|
throw new Exception(CoreErrorStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync(false, cancellationToken)) == false)
|
||||||
{
|
{
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await obj.Value.OpenAsync();
|
await obj.Value.OpenAsync(cancellationToken);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -225,11 +226,11 @@ namespace FreeSql.MySql
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public static Task<bool> PingAsync(this DbConnection that, bool isThrow = false)
|
async public static Task<bool> PingAsync(this DbConnection that, bool isThrow = false, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await PingCommand(that).ExecuteNonQueryAsync();
|
await PingCommand(that).ExecuteNonQueryAsync(cancellationToken);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
using FreeSql.Internal.ObjectPool;
|
using FreeSql.Internal.ObjectPool;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using System.Data.Common;
|
using System.Data.Common;
|
||||||
using System.Data.Odbc;
|
using System.Data.Odbc;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace FreeSql.Odbc.Default
|
namespace FreeSql.Odbc.Default
|
||||||
@@ -144,7 +144,7 @@ namespace FreeSql.Odbc.Default
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public Task OnGetAsync(Object<DbConnection> obj)
|
async public Task OnGetAsync(Object<DbConnection> obj, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (_pool.IsAvailable)
|
if (_pool.IsAvailable)
|
||||||
@@ -156,12 +156,12 @@ namespace FreeSql.Odbc.Default
|
|||||||
throw new Exception(CoreErrorStrings.S_ConnectionStringError_Check(this.Name));
|
throw new Exception(CoreErrorStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync(false, cancellationToken)) == false)
|
||||||
{
|
{
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await obj.Value.OpenAsync();
|
await obj.Value.OpenAsync(cancellationToken);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -222,11 +222,11 @@ namespace FreeSql.Odbc.Default
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public static Task<bool> PingAsync(this DbConnection that, bool isThrow = false)
|
async public static Task<bool> PingAsync(this DbConnection that, bool isThrow = false, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await PingCommand(that).ExecuteNonQueryAsync();
|
await PingCommand(that).ExecuteNonQueryAsync(cancellationToken);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
using FreeSql.Internal.ObjectPool;
|
using FreeSql.Internal.ObjectPool;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using System.Data.Common;
|
using System.Data.Common;
|
||||||
using System.Data.Odbc;
|
using System.Data.Odbc;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace FreeSql.Odbc.MySql
|
namespace FreeSql.Odbc.MySql
|
||||||
@@ -143,7 +143,7 @@ namespace FreeSql.Odbc.MySql
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public Task OnGetAsync(Object<DbConnection> obj)
|
async public Task OnGetAsync(Object<DbConnection> obj, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (_pool.IsAvailable)
|
if (_pool.IsAvailable)
|
||||||
@@ -154,12 +154,12 @@ namespace FreeSql.Odbc.MySql
|
|||||||
throw new Exception(CoreErrorStrings.S_ConnectionStringError_Check(this.Name));
|
throw new Exception(CoreErrorStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync(false, cancellationToken)) == false)
|
||||||
{
|
{
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await obj.Value.OpenAsync();
|
await obj.Value.OpenAsync(cancellationToken);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -220,11 +220,11 @@ namespace FreeSql.Odbc.MySql
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public static Task<bool> PingAsync(this DbConnection that, bool isThrow = false)
|
async public static Task<bool> PingAsync(this DbConnection that, bool isThrow = false, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await PingCommand(that).ExecuteNonQueryAsync();
|
await PingCommand(that).ExecuteNonQueryAsync(cancellationToken);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
using FreeSql.Internal.ObjectPool;
|
using FreeSql.Internal.ObjectPool;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using System.Data.Common;
|
using System.Data.Common;
|
||||||
using System.Data.Odbc;
|
using System.Data.Odbc;
|
||||||
using System.Text;
|
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace FreeSql.Odbc.Oracle
|
namespace FreeSql.Odbc.Oracle
|
||||||
@@ -154,7 +153,7 @@ namespace FreeSql.Odbc.Oracle
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public Task OnGetAsync(Object<DbConnection> obj)
|
async public Task OnGetAsync(Object<DbConnection> obj, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (_pool.IsAvailable)
|
if (_pool.IsAvailable)
|
||||||
@@ -165,12 +164,12 @@ namespace FreeSql.Odbc.Oracle
|
|||||||
throw new Exception(CoreErrorStrings.S_ConnectionStringError_Check(this.Name));
|
throw new Exception(CoreErrorStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync(false, cancellationToken)) == false)
|
||||||
{
|
{
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await obj.Value.OpenAsync();
|
await obj.Value.OpenAsync(cancellationToken);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -231,11 +230,11 @@ namespace FreeSql.Odbc.Oracle
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public static Task<bool> PingAsync(this DbConnection that, bool isThrow = false)
|
async public static Task<bool> PingAsync(this DbConnection that, bool isThrow = false, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await PingCommand(that).ExecuteNonQueryAsync();
|
await PingCommand(that).ExecuteNonQueryAsync(cancellationToken);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
using FreeSql.Internal.ObjectPool;
|
using FreeSql.Internal.ObjectPool;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using System.Data.Common;
|
using System.Data.Common;
|
||||||
using System.Data.Odbc;
|
using System.Data.Odbc;
|
||||||
using System.Text;
|
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace FreeSql.Odbc.PostgreSQL
|
namespace FreeSql.Odbc.PostgreSQL
|
||||||
@@ -144,7 +143,7 @@ namespace FreeSql.Odbc.PostgreSQL
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public Task OnGetAsync(Object<DbConnection> obj)
|
async public Task OnGetAsync(Object<DbConnection> obj, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (_pool.IsAvailable)
|
if (_pool.IsAvailable)
|
||||||
@@ -155,12 +154,12 @@ namespace FreeSql.Odbc.PostgreSQL
|
|||||||
throw new Exception(CoreErrorStrings.S_ConnectionStringError_Check(this.Name));
|
throw new Exception(CoreErrorStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync(false, cancellationToken)) == false)
|
||||||
{
|
{
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await obj.Value.OpenAsync();
|
await obj.Value.OpenAsync(cancellationToken);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -221,11 +220,11 @@ namespace FreeSql.Odbc.PostgreSQL
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public static Task<bool> PingAsync(this DbConnection that, bool isThrow = false)
|
async public static Task<bool> PingAsync(this DbConnection that, bool isThrow = false, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await PingCommand(that).ExecuteNonQueryAsync();
|
await PingCommand(that).ExecuteNonQueryAsync(cancellationToken);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
using FreeSql.Internal.ObjectPool;
|
using FreeSql.Internal.ObjectPool;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using System.Data.Common;
|
using System.Data.Common;
|
||||||
using System.Data.Odbc;
|
using System.Data.Odbc;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace FreeSql.Odbc.SqlServer
|
namespace FreeSql.Odbc.SqlServer
|
||||||
@@ -144,7 +144,7 @@ namespace FreeSql.Odbc.SqlServer
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public Task OnGetAsync(Object<DbConnection> obj)
|
async public Task OnGetAsync(Object<DbConnection> obj, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (_pool.IsAvailable)
|
if (_pool.IsAvailable)
|
||||||
@@ -156,12 +156,12 @@ namespace FreeSql.Odbc.SqlServer
|
|||||||
throw new Exception(CoreErrorStrings.S_ConnectionStringError_Check(this.Name));
|
throw new Exception(CoreErrorStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync(false, cancellationToken)) == false)
|
||||||
{
|
{
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await obj.Value.OpenAsync();
|
await obj.Value.OpenAsync(cancellationToken);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -222,11 +222,11 @@ namespace FreeSql.Odbc.SqlServer
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public static Task<bool> PingAsync(this DbConnection that, bool isThrow = false)
|
async public static Task<bool> PingAsync(this DbConnection that, bool isThrow = false, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await PingCommand(that).ExecuteNonQueryAsync();
|
await PingCommand(that).ExecuteNonQueryAsync(cancellationToken);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ using System.Data;
|
|||||||
using System.Data.Common;
|
using System.Data.Common;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using System.Threading;
|
||||||
|
|
||||||
namespace FreeSql.Oracle
|
namespace FreeSql.Oracle
|
||||||
{
|
{
|
||||||
@@ -164,7 +165,7 @@ namespace FreeSql.Oracle
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public Task OnGetAsync(Object<DbConnection> obj)
|
async public Task OnGetAsync(Object<DbConnection> obj, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (_pool.IsAvailable)
|
if (_pool.IsAvailable)
|
||||||
@@ -175,12 +176,12 @@ namespace FreeSql.Oracle
|
|||||||
throw new Exception(CoreErrorStrings.S_ConnectionStringError_Check(this.Name));
|
throw new Exception(CoreErrorStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync(false, cancellationToken)) == false)
|
||||||
{
|
{
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await obj.Value.OpenAsync();
|
await obj.Value.OpenAsync(cancellationToken);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -241,11 +242,11 @@ namespace FreeSql.Oracle
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public static Task<bool> PingAsync(this DbConnection that, bool isThrow = false)
|
async public static Task<bool> PingAsync(this DbConnection that, bool isThrow = false, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await PingCommand(that).ExecuteNonQueryAsync();
|
await PingCommand(that).ExecuteNonQueryAsync(cancellationToken);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
using Npgsql;
|
using FreeSql.Internal.ObjectPool;
|
||||||
using FreeSql.Internal.ObjectPool;
|
using Npgsql;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using System.Data.Common;
|
using System.Data.Common;
|
||||||
using System.Text;
|
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace FreeSql.PostgreSQL
|
namespace FreeSql.PostgreSQL
|
||||||
@@ -145,7 +144,7 @@ namespace FreeSql.PostgreSQL
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public Task OnGetAsync(Object<DbConnection> obj)
|
async public Task OnGetAsync(Object<DbConnection> obj, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (_pool.IsAvailable)
|
if (_pool.IsAvailable)
|
||||||
@@ -156,12 +155,12 @@ namespace FreeSql.PostgreSQL
|
|||||||
throw new Exception(CoreErrorStrings.S_ConnectionStringError_Check(this.Name));
|
throw new Exception(CoreErrorStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync(false, cancellationToken)) == false)
|
||||||
{
|
{
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await obj.Value.OpenAsync();
|
await obj.Value.OpenAsync(cancellationToken);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -222,11 +221,11 @@ namespace FreeSql.PostgreSQL
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public static Task<bool> PingAsync(this DbConnection that, bool isThrow = false)
|
async public static Task<bool> PingAsync(this DbConnection that, bool isThrow = false, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await PingCommand(that).ExecuteNonQueryAsync();
|
await PingCommand(that).ExecuteNonQueryAsync(cancellationToken);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
using Npgsql;
|
using FreeSql.Internal.ObjectPool;
|
||||||
using FreeSql.Internal.ObjectPool;
|
using Npgsql;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using System.Data.Common;
|
using System.Data.Common;
|
||||||
using System.Text;
|
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace FreeSql.QuestDb
|
namespace FreeSql.QuestDb
|
||||||
@@ -145,7 +144,7 @@ namespace FreeSql.QuestDb
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public Task OnGetAsync(Object<DbConnection> obj)
|
async public Task OnGetAsync(Object<DbConnection> obj, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (_pool.IsAvailable)
|
if (_pool.IsAvailable)
|
||||||
@@ -156,12 +155,12 @@ namespace FreeSql.QuestDb
|
|||||||
throw new Exception(CoreErrorStrings.S_ConnectionStringError_Check(this.Name));
|
throw new Exception(CoreErrorStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync(false, cancellationToken)) == false)
|
||||||
{
|
{
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await obj.Value.OpenAsync();
|
await obj.Value.OpenAsync(cancellationToken);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -222,11 +221,11 @@ namespace FreeSql.QuestDb
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public static Task<bool> PingAsync(this DbConnection that, bool isThrow = false)
|
async public static Task<bool> PingAsync(this DbConnection that, bool isThrow = false, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await PingCommand(that).ExecuteNonQueryAsync();
|
await PingCommand(that).ExecuteNonQueryAsync(cancellationToken);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ using System.Data;
|
|||||||
using System.Data.Common;
|
using System.Data.Common;
|
||||||
using System.Data.OscarClient;
|
using System.Data.OscarClient;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace FreeSql.ShenTong
|
namespace FreeSql.ShenTong
|
||||||
@@ -143,7 +144,7 @@ namespace FreeSql.ShenTong
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public Task OnGetAsync(Object<DbConnection> obj)
|
async public Task OnGetAsync(Object<DbConnection> obj, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (_pool.IsAvailable)
|
if (_pool.IsAvailable)
|
||||||
@@ -154,12 +155,12 @@ namespace FreeSql.ShenTong
|
|||||||
throw new Exception(CoreErrorStrings.S_ConnectionStringError_Check(this.Name));
|
throw new Exception(CoreErrorStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync(false, cancellationToken)) == false)
|
||||||
{
|
{
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await obj.Value.OpenAsync();
|
await obj.Value.OpenAsync(cancellationToken);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -220,11 +221,11 @@ namespace FreeSql.ShenTong
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public static Task<bool> PingAsync(this DbConnection that, bool isThrow = false)
|
async public static Task<bool> PingAsync(this DbConnection that, bool isThrow = false, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await PingCommand(that).ExecuteNonQueryAsync();
|
await PingCommand(that).ExecuteNonQueryAsync(cancellationToken);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
using FreeSql.Internal.ObjectPool;
|
using FreeSql.Internal.ObjectPool;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using System.Data.Common;
|
using System.Data.Common;
|
||||||
#if microsoft
|
#if microsoft
|
||||||
@@ -10,6 +9,7 @@ using Microsoft.Data.SqlClient;
|
|||||||
using System.Data.SqlClient;
|
using System.Data.SqlClient;
|
||||||
#endif
|
#endif
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace FreeSql.SqlServer
|
namespace FreeSql.SqlServer
|
||||||
@@ -148,7 +148,7 @@ namespace FreeSql.SqlServer
|
|||||||
}
|
}
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public Task OnGetAsync(Object<DbConnection> obj)
|
async public Task OnGetAsync(Object<DbConnection> obj, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (_pool.IsAvailable)
|
if (_pool.IsAvailable)
|
||||||
@@ -160,11 +160,11 @@ namespace FreeSql.SqlServer
|
|||||||
throw new Exception(CoreErrorStrings.S_ConnectionStringError_Check(this.Name));
|
throw new Exception(CoreErrorStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync(false, cancellationToken)) == false)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await obj.Value.OpenAsync();
|
await obj.Value.OpenAsync(cancellationToken);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -223,11 +223,11 @@ namespace FreeSql.SqlServer
|
|||||||
}
|
}
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public static Task<bool> PingAsync(this DbConnection that, bool isThrow = false)
|
async public static Task<bool> PingAsync(this DbConnection that, bool isThrow = false, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await PingCommand(that).ExecuteNonQueryAsync();
|
await PingCommand(that).ExecuteNonQueryAsync(cancellationToken);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ using System.Linq;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using System.Threading;
|
||||||
|
|
||||||
namespace FreeSql.Sqlite
|
namespace FreeSql.Sqlite
|
||||||
{
|
{
|
||||||
@@ -164,7 +165,7 @@ namespace FreeSql.Sqlite
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public Task OnGetAsync(Object<DbConnection> obj)
|
async public Task OnGetAsync(Object<DbConnection> obj, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (_pool.IsAvailable)
|
if (_pool.IsAvailable)
|
||||||
@@ -173,7 +174,7 @@ namespace FreeSql.Sqlite
|
|||||||
throw new Exception(CoreErrorStrings.S_ConnectionStringError_Check(this.Name));
|
throw new Exception(CoreErrorStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open)
|
if (obj.Value.State != ConnectionState.Open)
|
||||||
await obj.Value.OpenAndAttachAsync(Attaches);
|
await obj.Value.OpenAndAttachAsync(Attaches, cancellationToken);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -244,26 +245,9 @@ namespace FreeSql.Sqlite
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public static Task<bool> PingAsync(this DbConnection that, bool isThrow = false)
|
async public static Task OpenAndAttachAsync(this DbConnection that, string[] attach, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
try
|
await that.OpenAsync(cancellationToken);
|
||||||
{
|
|
||||||
using (var cmd = PingCommand(that))
|
|
||||||
{
|
|
||||||
await cmd.ExecuteNonQueryAsync();
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
if (that.State != ConnectionState.Closed) try { that.Close(); } catch { }
|
|
||||||
if (isThrow) throw;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
async public static Task OpenAndAttachAsync(this DbConnection that, string[] attach)
|
|
||||||
{
|
|
||||||
await that.OpenAsync();
|
|
||||||
|
|
||||||
if (attach?.Any() == true)
|
if (attach?.Any() == true)
|
||||||
{
|
{
|
||||||
@@ -273,7 +257,7 @@ namespace FreeSql.Sqlite
|
|||||||
|
|
||||||
var cmd = that.CreateCommand();
|
var cmd = that.CreateCommand();
|
||||||
cmd.CommandText = sb.ToString();
|
cmd.CommandText = sb.ToString();
|
||||||
await cmd.ExecuteNonQueryAsync();
|
await cmd.ExecuteNonQueryAsync(cancellationToken);
|
||||||
cmd.Dispose();
|
cmd.Dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,10 +4,9 @@ using System.Collections.Concurrent;
|
|||||||
using System.Data;
|
using System.Data;
|
||||||
using System.Data.Common;
|
using System.Data.Common;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using TDengine.Data.Client;
|
using TDengine.Data.Client;
|
||||||
using TDengine.Driver;
|
|
||||||
using TDengine.Driver.Client;
|
|
||||||
|
|
||||||
namespace FreeSql.TDengine
|
namespace FreeSql.TDengine
|
||||||
{
|
{
|
||||||
@@ -141,7 +140,7 @@ namespace FreeSql.TDengine
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
public async Task OnGetAsync(Object<DbConnection> obj)
|
public async Task OnGetAsync(Object<DbConnection> obj, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
if (InternalPool.IsAvailable)
|
if (InternalPool.IsAvailable)
|
||||||
{
|
{
|
||||||
@@ -154,11 +153,11 @@ namespace FreeSql.TDengine
|
|||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open ||
|
if (obj.Value.State != ConnectionState.Open ||
|
||||||
DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 &&
|
DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 &&
|
||||||
(await obj.Value.PingAsync()) == false)
|
(await obj.Value.PingAsync(false, cancellationToken)) == false)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await obj.Value.OpenAsync();
|
await obj.Value.OpenAsync(cancellationToken);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -228,11 +227,11 @@ namespace FreeSql.TDengine
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
public static async Task<bool> PingAsync(this DbConnection that, bool isThrow = false)
|
public static async Task<bool> PingAsync(this DbConnection that, bool isThrow = false, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await PingCommand(that).ExecuteNonQueryAsync();
|
await PingCommand(that).ExecuteNonQueryAsync(cancellationToken);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ using System.Collections.Concurrent;
|
|||||||
using System.Data;
|
using System.Data;
|
||||||
using System.Data.Common;
|
using System.Data.Common;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace FreeSql.Xugu
|
namespace FreeSql.Xugu
|
||||||
@@ -143,7 +144,7 @@ namespace FreeSql.Xugu
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public Task OnGetAsync(Object<DbConnection> obj)
|
async public Task OnGetAsync(Object<DbConnection> obj, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (_pool.IsAvailable)
|
if (_pool.IsAvailable)
|
||||||
@@ -154,12 +155,12 @@ namespace FreeSql.Xugu
|
|||||||
throw new Exception(CoreErrorStrings.S_ConnectionStringError_Check(this.Name));
|
throw new Exception(CoreErrorStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync(false, cancellationToken)) == false)
|
||||||
{
|
{
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await obj.Value.OpenAsync();
|
await obj.Value.OpenAsync(cancellationToken);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -220,11 +221,11 @@ namespace FreeSql.Xugu
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
async public static Task<bool> PingAsync(this DbConnection that, bool isThrow = false)
|
async public static Task<bool> PingAsync(this DbConnection that, bool isThrow = false, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await PingCommand(that).ExecuteNonQueryAsync();
|
await PingCommand(that).ExecuteNonQueryAsync(cancellationToken);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
|
|||||||
Reference in New Issue
Block a user