diff --git a/FreeSql.DbContext/DbContext/DbContext.cs b/FreeSql.DbContext/DbContext/DbContext.cs
index dedde15f..f59890cb 100644
--- a/FreeSql.DbContext/DbContext/DbContext.cs
+++ b/FreeSql.DbContext/DbContext/DbContext.cs
@@ -13,6 +13,10 @@ namespace FreeSql
{
internal DbContextScopedFreeSql _ormScoped;
internal IFreeSql OrmOriginal => _ormScoped?._originalFsql ?? throw new ArgumentNullException("请在 OnConfiguring 或 AddFreeDbContext 中配置 UseFreeSql");
+
+ ///
+ /// 该对象 Select/Delete/Insert/Update/InsertOrUpdate 与 DbContext 事务保持一致,可省略传递 WithTransaction
+ ///
public IFreeSql Orm => _ormScoped ?? throw new ArgumentNullException("请在 OnConfiguring 或 AddFreeDbContext 中配置 UseFreeSql");
#region Property UnitOfWork
diff --git a/FreeSql.DbContext/DbContext/DbContextScopedFreeSql.cs b/FreeSql.DbContext/DbContext/DbContextScopedFreeSql.cs
index adeaab0d..28b429c8 100644
--- a/FreeSql.DbContext/DbContext/DbContextScopedFreeSql.cs
+++ b/FreeSql.DbContext/DbContext/DbContextScopedFreeSql.cs
@@ -1,8 +1,12 @@
using FreeSql;
using FreeSql.Internal;
+using FreeSql.Internal.CommonProvider;
+using FreeSql.Internal.Model;
+using FreeSql.Internal.ObjectPool;
using System;
using System.Collections.Generic;
using System.Data;
+using System.Data.Common;
using System.Text;
namespace FreeSql
@@ -18,11 +22,39 @@ namespace FreeSql
{
if (fsql == null) return null;
var scopedfsql = fsql as DbContextScopedFreeSql;
- if (scopedfsql == null) return new DbContextScopedFreeSql { _originalFsql = fsql, _resolveDbContext = resolveDbContext, _resolveUnitOfWork = resolveUnitOfWork };
+ if (scopedfsql == null)
+ return new DbContextScopedFreeSql
+ {
+ _originalFsql = fsql,
+ _resolveDbContext = resolveDbContext,
+ _resolveUnitOfWork = resolveUnitOfWork,
+ Ado = new ScopeTransactionAdo(fsql.Ado as AdoProvider, () =>
+ {
+ var db = resolveDbContext?.Invoke();
+ db?.FlushCommand();
+ return resolveUnitOfWork?.Invoke()?.GetOrBeginTransaction();
+ })
+ };
return Create(scopedfsql._originalFsql, resolveDbContext, resolveUnitOfWork);
}
- public IAdo Ado => _originalFsql.Ado;
+ class ScopeTransactionAdo : AdoProvider
+ {
+ AdoProvider _ado;
+ public ScopeTransactionAdo(AdoProvider ado, Func resolveTran) : base(ado.DataType, null, null)
+ {
+ _ado = ado;
+ base.ResolveTransaction = resolveTran;
+ base.ConnectionString = ado.ConnectionString;
+ base.SlaveConnectionStrings = ado.SlaveConnectionStrings;
+ base.Identifier = ado.Identifier;
+ }
+ public override object AddslashesProcessParam(object param, Type mapType, ColumnInfo mapColumn) => _ado.AddslashesProcessParam(param, mapType, mapColumn);
+ public override DbCommand CreateCommand() => _ado.CreateCommand();
+ public override DbParameter[] GetDbParamtersByObject(string sql, object obj) => _ado.GetDbParamtersByObject(sql, obj);
+ public override void ReturnConnection(IObjectPool pool, Object conn, Exception ex) => _ado.ReturnConnection(pool, conn, ex);
+ }
+ public IAdo Ado { get; private set; }
public IAop Aop => _originalFsql.Aop;
public ICodeFirst CodeFirst => _originalFsql.CodeFirst;
public IDbFirst DbFirst => _originalFsql.DbFirst;
diff --git a/FreeSql.DbContext/FreeSql.DbContext.xml b/FreeSql.DbContext/FreeSql.DbContext.xml
index e4208f1f..02eb0609 100644
--- a/FreeSql.DbContext/FreeSql.DbContext.xml
+++ b/FreeSql.DbContext/FreeSql.DbContext.xml
@@ -4,6 +4,11 @@
FreeSql.DbContext
+
+
+ 该对象 Select/Delete/Insert/Update/InsertOrUpdate 与 DbContext 事务保持一致,可省略传递 WithTransaction
+
+
添加
@@ -343,6 +348,11 @@
工作单元
+
+
+ 该对象 Select/Delete/Insert/Update/InsertOrUpdate 与工作单元事务保持一致,可省略传递 WithTransaction
+
+
开启事务,或者返回已开启的事务
@@ -502,14 +512,5 @@
-
-
- 批量注入 Repository,可以参考代码自行调整
-
-
-
-
-
-
diff --git a/FreeSql.DbContext/UnitOfWork/IUnitOfWork.cs b/FreeSql.DbContext/UnitOfWork/IUnitOfWork.cs
index 2e9a53be..7f0565cd 100644
--- a/FreeSql.DbContext/UnitOfWork/IUnitOfWork.cs
+++ b/FreeSql.DbContext/UnitOfWork/IUnitOfWork.cs
@@ -10,6 +10,9 @@ namespace FreeSql
///
public interface IUnitOfWork : IDisposable
{
+ ///
+ /// 该对象 Select/Delete/Insert/Update/InsertOrUpdate 与工作单元事务保持一致,可省略传递 WithTransaction
+ ///
IFreeSql Orm { get; }
///
diff --git a/FreeSql.Tests/FreeSql.Tests.DbContext/RepositoryTests.cs b/FreeSql.Tests/FreeSql.Tests.DbContext/RepositoryTests.cs
index a0a28791..6ec35c54 100644
--- a/FreeSql.Tests/FreeSql.Tests.DbContext/RepositoryTests.cs
+++ b/FreeSql.Tests/FreeSql.Tests.DbContext/RepositoryTests.cs
@@ -130,6 +130,7 @@ namespace FreeSql.Tests
flowRepos = uow.GetRepository();
flowRepos.Insert(flow);
flowRepos.Orm.Select().ToList();
+ flowRepos.Orm.Ado.ExecuteConnectTest();
uow.Commit();
}
}
diff --git a/FreeSql/FreeSql.xml b/FreeSql/FreeSql.xml
index f5d2d1db..a06a844f 100644
--- a/FreeSql/FreeSql.xml
+++ b/FreeSql/FreeSql.xml
@@ -3089,177 +3089,6 @@
-
-
- 测试数据库是否连接正确,本方法执行如下命令:
- MySql/SqlServer/PostgreSQL/达梦/人大金仓/神通: SELECT 1
- Oracle: SELECT 1 FROM dual
-
- 命令超时设置(秒)
-
- true: 成功, false: 失败
-
-
-
- 查询,若使用读写分离,查询【从库】条件cmdText.StartsWith("SELECT "),否则查询【主库】
-
-
-
-
-
-
-
-
-
- 查询,ExecuteReaderAsync(dr => {}, "select * from user where age > @age", new { age = 25 })
- 提示:parms 参数还可以传 Dictionary<string, object>
-
-
-
-
-
-
-
-
- 查询
-
-
-
-
-
-
-
-
- 查询,ExecuteArrayAsync("select * from user where age > @age", new { age = 25 })
- 提示:parms 参数还可以传 Dictionary<string, object>
-
-
-
-
-
-
-
-
- 查询
-
-
-
-
-
-
-
-
- 查询,ExecuteDataSetAsync("select * from user where age > @age; select 2", new { age = 25 })
- 提示:parms 参数还可以传 Dictionary<string, object>
-
-
-
-
-
-
-
-
- 查询
-
-
-
-
-
-
-
-
- 查询,ExecuteDataTableAsync("select * from user where age > @age", new { age = 25 })
- 提示:parms 参数还可以传 Dictionary<string, object>
-
-
-
-
-
-
-
-
- 在【主库】执行
-
-
-
-
-
-
-
-
- 在【主库】执行,ExecuteNonQueryAsync("delete from user where age > @age", new { age = 25 })
- 提示:parms 参数还可以传 Dictionary<string, object>
-
-
-
-
-
-
-
-
- 在【主库】执行
-
-
-
-
-
-
-
-
- 在【主库】执行,ExecuteScalarAsync("select 1 from user where age > @age", new { age = 25 })
- 提示:parms 参数还可以传 Dictionary<string, object>
-
-
-
-
-
-
-
-
- 执行SQL返回对象集合,QueryAsync<User>("select * from user where age > @age", new SqlParameter { ParameterName = "age", Value = 25 })
-
-
-
-
-
-
-
-
-
-
- 执行SQL返回对象集合,QueryAsync<User>("select * from user where age > @age", new { age = 25 })
- 提示:parms 参数还可以传 Dictionary<string, object>
-
-
-
-
-
-
-
-
-
- 执行SQL返回对象集合,Query<User>("select * from user where age > @age; select * from address", new SqlParameter { ParameterName = "age", Value = 25 })
-
-
-
-
-
-
-
-
-
-
-
- 执行SQL返回对象集合,Query<User, Address>("select * from user where age > @age; select * from address", new { age = 25 })
- 提示:parms 参数还可以传 Dictionary<string, object>
-
-
-
-
-
-
-
-
可自定义解析表达式
@@ -4088,12 +3917,6 @@
超时
-
-
- 获取资源
-
-
-
使用完毕后,归还资源
@@ -4164,12 +3987,6 @@
资源对象
-
-
- 从对象池获取对象成功的时候触发,通过该方法统计或初始化对象
-
- 资源对象
-
归还对象给对象池的时候触发
diff --git a/FreeSql/Internal/CommonProvider/AdoProvider/AdoProvider.cs b/FreeSql/Internal/CommonProvider/AdoProvider/AdoProvider.cs
index 3ed9be74..6bffc242 100644
--- a/FreeSql/Internal/CommonProvider/AdoProvider/AdoProvider.cs
+++ b/FreeSql/Internal/CommonProvider/AdoProvider/AdoProvider.cs
@@ -17,7 +17,7 @@ namespace FreeSql.Internal.CommonProvider
public abstract partial class AdoProvider : IAdo, IDisposable
{
- protected abstract void ReturnConnection(IObjectPool pool, Object conn, Exception ex);
+ public abstract void ReturnConnection(IObjectPool pool, Object conn, Exception ex);
public abstract DbCommand CreateCommand();
public abstract DbParameter[] GetDbParamtersByObject(string sql, object obj);
public DbParameter[] GetDbParamtersByObject(object obj) => GetDbParamtersByObject("*", obj);
@@ -27,14 +27,15 @@ namespace FreeSql.Internal.CommonProvider
public IObjectPool MasterPool { get; protected set; }
public List> SlavePools { get; } = new List>();
public DataType DataType { get; }
- public string ConnectionString { get; }
- public string[] SlaveConnectionStrings { get; }
- public Guid Identifier { get; }
+ public string ConnectionString { get; protected set; }
+ public string[] SlaveConnectionStrings { get; protected set; }
+ public Guid Identifier { get; protected set; }
protected CommonUtils _util { get; set; }
protected int slaveUnavailables = 0;
private object slaveLock = new object();
private Random slaveRandom = new Random();
+ protected Func ResolveTransaction;
public AdoProvider(DataType dataType, string connectionString, string[] slaveConnectionStrings)
{
@@ -876,7 +877,7 @@ namespace FreeSql.Internal.CommonProvider
if (connection == null)
{
- var tran = transaction ?? TransactionCurrentThread;
+ var tran = transaction ?? ResolveTransaction?.Invoke() ?? TransactionCurrentThread;
if (tran != null && connection == null)
{
cmd.Connection = tran.Connection;
diff --git a/FreeSql/Internal/CommonProvider/AdoProvider/AdoProviderAsync.cs b/FreeSql/Internal/CommonProvider/AdoProvider/AdoProviderAsync.cs
index 8421208a..bfb147d2 100644
--- a/FreeSql/Internal/CommonProvider/AdoProvider/AdoProviderAsync.cs
+++ b/FreeSql/Internal/CommonProvider/AdoProvider/AdoProviderAsync.cs
@@ -782,7 +782,7 @@ namespace FreeSql.Internal.CommonProvider
if (connection == null)
{
- var tran = transaction;
+ var tran = transaction ?? ResolveTransaction?.Invoke();
if (tran != null)
{
diff --git a/Providers/FreeSql.Provider.Dameng/DamengAdo/DamengAdo.cs b/Providers/FreeSql.Provider.Dameng/DamengAdo/DamengAdo.cs
index 64634235..b49c2a8a 100644
--- a/Providers/FreeSql.Provider.Dameng/DamengAdo/DamengAdo.cs
+++ b/Providers/FreeSql.Provider.Dameng/DamengAdo/DamengAdo.cs
@@ -65,7 +65,7 @@ namespace FreeSql.Dameng
return new DmCommand();
}
- protected override void ReturnConnection(IObjectPool pool, Object conn, Exception ex)
+ public override void ReturnConnection(IObjectPool pool, Object conn, Exception ex)
{
var rawPool = pool as DamengConnectionPool;
if (rawPool != null) rawPool.Return(conn, ex);
diff --git a/Providers/FreeSql.Provider.Firebird/FirebirdAdo/FirebirdAdo.cs b/Providers/FreeSql.Provider.Firebird/FirebirdAdo/FirebirdAdo.cs
index 63e06ea5..1c323bd9 100644
--- a/Providers/FreeSql.Provider.Firebird/FirebirdAdo/FirebirdAdo.cs
+++ b/Providers/FreeSql.Provider.Firebird/FirebirdAdo/FirebirdAdo.cs
@@ -96,7 +96,7 @@ namespace FreeSql.Firebird
return new FbCommand();
}
- protected override void ReturnConnection(IObjectPool pool, Object conn, Exception ex)
+ public override void ReturnConnection(IObjectPool pool, Object conn, Exception ex)
{
var rawPool = pool as FirebirdConnectionPool;
if (rawPool != null) rawPool.Return(conn, ex);
diff --git a/Providers/FreeSql.Provider.KingbaseES/KingbaseESAdo/KingbaseESAdo.cs b/Providers/FreeSql.Provider.KingbaseES/KingbaseESAdo/KingbaseESAdo.cs
index cad591ac..459eb34b 100644
--- a/Providers/FreeSql.Provider.KingbaseES/KingbaseESAdo/KingbaseESAdo.cs
+++ b/Providers/FreeSql.Provider.KingbaseES/KingbaseESAdo/KingbaseESAdo.cs
@@ -66,7 +66,7 @@ namespace FreeSql.KingbaseES
return new KdbndpCommand();
}
- protected override void ReturnConnection(IObjectPool pool, Object conn, Exception ex)
+ public override void ReturnConnection(IObjectPool pool, Object conn, Exception ex)
{
var rawPool = pool as KingbaseESConnectionPool;
if (rawPool != null) rawPool.Return(conn, ex);
diff --git a/Providers/FreeSql.Provider.MsAccess/MsAccessAdo/MsAccessAdo.cs b/Providers/FreeSql.Provider.MsAccess/MsAccessAdo/MsAccessAdo.cs
index 1f69bec9..16f3c32c 100644
--- a/Providers/FreeSql.Provider.MsAccess/MsAccessAdo/MsAccessAdo.cs
+++ b/Providers/FreeSql.Provider.MsAccess/MsAccessAdo/MsAccessAdo.cs
@@ -70,7 +70,7 @@ namespace FreeSql.MsAccess
return new OleDbCommand();
}
- protected override void ReturnConnection(IObjectPool pool, Object conn, Exception ex)
+ public override void ReturnConnection(IObjectPool pool, Object conn, Exception ex)
{
var rawPool = pool as MsAccessConnectionPool;
if (rawPool != null) rawPool.Return(conn, ex);
diff --git a/Providers/FreeSql.Provider.MySql/MySqlAdo/MySqlAdo.cs b/Providers/FreeSql.Provider.MySql/MySqlAdo/MySqlAdo.cs
index 66f62f8e..bacef5e6 100644
--- a/Providers/FreeSql.Provider.MySql/MySqlAdo/MySqlAdo.cs
+++ b/Providers/FreeSql.Provider.MySql/MySqlAdo/MySqlAdo.cs
@@ -72,7 +72,7 @@ namespace FreeSql.MySql
return new MySqlCommand();
}
- protected override void ReturnConnection(IObjectPool pool, Object conn, Exception ex)
+ public override void ReturnConnection(IObjectPool pool, Object conn, Exception ex)
{
var rawPool = pool as MySqlConnectionPool;
if (rawPool != null) rawPool.Return(conn, ex);
diff --git a/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengAdo/OdbcDamengAdo.cs b/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengAdo/OdbcDamengAdo.cs
index 56ea4ebd..e1b0b19e 100644
--- a/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengAdo/OdbcDamengAdo.cs
+++ b/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengAdo/OdbcDamengAdo.cs
@@ -66,7 +66,7 @@ namespace FreeSql.Odbc.Dameng
return new OdbcCommand();
}
- protected override void ReturnConnection(IObjectPool pool, Object conn, Exception ex)
+ public override void ReturnConnection(IObjectPool pool, Object conn, Exception ex)
{
var rawPool = pool as OdbcDamengConnectionPool;
if (rawPool != null) rawPool.Return(conn, ex);
diff --git a/Providers/FreeSql.Provider.Odbc/Default/OdbcAdo/OdbcAdo.cs b/Providers/FreeSql.Provider.Odbc/Default/OdbcAdo/OdbcAdo.cs
index bda2426b..91281364 100644
--- a/Providers/FreeSql.Provider.Odbc/Default/OdbcAdo/OdbcAdo.cs
+++ b/Providers/FreeSql.Provider.Odbc/Default/OdbcAdo/OdbcAdo.cs
@@ -67,7 +67,7 @@ namespace FreeSql.Odbc.Default
return new OdbcCommand();
}
- protected override void ReturnConnection(IObjectPool pool, Object conn, Exception ex)
+ public override void ReturnConnection(IObjectPool pool, Object conn, Exception ex)
{
var rawPool = pool as OdbcConnectionPool;
if (rawPool != null) rawPool.Return(conn, ex);
diff --git a/Providers/FreeSql.Provider.Odbc/KingbaseES/OdbcKingbaseESAdo/OdbcKingbaseESAdo.cs b/Providers/FreeSql.Provider.Odbc/KingbaseES/OdbcKingbaseESAdo/OdbcKingbaseESAdo.cs
index 94b9bda8..f9773484 100644
--- a/Providers/FreeSql.Provider.Odbc/KingbaseES/OdbcKingbaseESAdo/OdbcKingbaseESAdo.cs
+++ b/Providers/FreeSql.Provider.Odbc/KingbaseES/OdbcKingbaseESAdo/OdbcKingbaseESAdo.cs
@@ -66,7 +66,7 @@ namespace FreeSql.Odbc.KingbaseES
return new OdbcCommand();
}
- protected override void ReturnConnection(IObjectPool pool, Object conn, Exception ex)
+ public override void ReturnConnection(IObjectPool pool, Object conn, Exception ex)
{
var rawPool = pool as OdbcKingbaseESConnectionPool;
if (rawPool != null) rawPool.Return(conn, ex);
diff --git a/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlAdo/OdbcMySqlAdo.cs b/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlAdo/OdbcMySqlAdo.cs
index 0c18f7b7..33c32a63 100644
--- a/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlAdo/OdbcMySqlAdo.cs
+++ b/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlAdo/OdbcMySqlAdo.cs
@@ -66,7 +66,7 @@ namespace FreeSql.Odbc.MySql
return new OdbcCommand();
}
- protected override void ReturnConnection(IObjectPool pool, Object conn, Exception ex)
+ public override void ReturnConnection(IObjectPool pool, Object conn, Exception ex)
{
var rawPool = pool as OdbcMySqlConnectionPool;
if (rawPool != null) rawPool.Return(conn, ex);
diff --git a/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleAdo/OdbcOracleAdo.cs b/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleAdo/OdbcOracleAdo.cs
index 4e81bef1..cfdf8917 100644
--- a/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleAdo/OdbcOracleAdo.cs
+++ b/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleAdo/OdbcOracleAdo.cs
@@ -66,7 +66,7 @@ namespace FreeSql.Odbc.Oracle
return new OdbcCommand();
}
- protected override void ReturnConnection(IObjectPool pool, Object conn, Exception ex)
+ public override void ReturnConnection(IObjectPool pool, Object conn, Exception ex)
{
var rawPool = pool as OdbcOracleConnectionPool;
if (rawPool != null) rawPool.Return(conn, ex);
diff --git a/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLAdo/OdbcPostgreSQLAdo.cs b/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLAdo/OdbcPostgreSQLAdo.cs
index e8f0c53e..27ef0721 100644
--- a/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLAdo/OdbcPostgreSQLAdo.cs
+++ b/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLAdo/OdbcPostgreSQLAdo.cs
@@ -67,7 +67,7 @@ namespace FreeSql.Odbc.PostgreSQL
return new OdbcCommand();
}
- protected override void ReturnConnection(IObjectPool pool, Object conn, Exception ex)
+ public override void ReturnConnection(IObjectPool pool, Object conn, Exception ex)
{
var rawPool = pool as OdbcPostgreSQLConnectionPool;
if (rawPool != null) rawPool.Return(conn, ex);
diff --git a/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerAdo/OdbcSqlServerAdo.cs b/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerAdo/OdbcSqlServerAdo.cs
index 73ad461f..e0a567a4 100644
--- a/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerAdo/OdbcSqlServerAdo.cs
+++ b/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerAdo/OdbcSqlServerAdo.cs
@@ -80,7 +80,7 @@ namespace FreeSql.Odbc.SqlServer
return new OdbcCommand();
}
- protected override void ReturnConnection(IObjectPool pool, Object conn, Exception ex)
+ public override void ReturnConnection(IObjectPool pool, Object conn, Exception ex)
{
var rawPool = pool as OdbcSqlServerConnectionPool;
if (rawPool != null) rawPool.Return(conn, ex);
diff --git a/Providers/FreeSql.Provider.Oracle/OracleAdo/OracleAdo.cs b/Providers/FreeSql.Provider.Oracle/OracleAdo/OracleAdo.cs
index 57d161e0..7279eb7a 100644
--- a/Providers/FreeSql.Provider.Oracle/OracleAdo/OracleAdo.cs
+++ b/Providers/FreeSql.Provider.Oracle/OracleAdo/OracleAdo.cs
@@ -68,7 +68,7 @@ namespace FreeSql.Oracle
return cmd;
}
- protected override void ReturnConnection(IObjectPool pool, Object conn, Exception ex)
+ public override void ReturnConnection(IObjectPool pool, Object conn, Exception ex)
{
var rawPool = pool as OracleConnectionPool;
if (rawPool != null) rawPool.Return(conn, ex);
diff --git a/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLAdo/PostgreSQLAdo.cs b/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLAdo/PostgreSQLAdo.cs
index 857ca688..931ad21a 100644
--- a/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLAdo/PostgreSQLAdo.cs
+++ b/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLAdo/PostgreSQLAdo.cs
@@ -84,7 +84,7 @@ namespace FreeSql.PostgreSQL
return new NpgsqlCommand();
}
- protected override void ReturnConnection(IObjectPool pool, Object conn, Exception ex)
+ public override void ReturnConnection(IObjectPool pool, Object conn, Exception ex)
{
var rawPool = pool as PostgreSQLConnectionPool;
if (rawPool != null) rawPool.Return(conn, ex);
diff --git a/Providers/FreeSql.Provider.ShenTong/ShenTongAdo/ShenTongAdo.cs b/Providers/FreeSql.Provider.ShenTong/ShenTongAdo/ShenTongAdo.cs
index 33da3ebd..0fa64c97 100644
--- a/Providers/FreeSql.Provider.ShenTong/ShenTongAdo/ShenTongAdo.cs
+++ b/Providers/FreeSql.Provider.ShenTong/ShenTongAdo/ShenTongAdo.cs
@@ -67,7 +67,7 @@ namespace FreeSql.ShenTong
return new OscarCommand();
}
- protected override void ReturnConnection(IObjectPool pool, Object conn, Exception ex)
+ public override void ReturnConnection(IObjectPool pool, Object conn, Exception ex)
{
var rawPool = pool as ShenTongConnectionPool;
if (rawPool != null) rawPool.Return(conn, ex);
diff --git a/Providers/FreeSql.Provider.SqlServer/SqlServerAdo/SqlServerAdo.cs b/Providers/FreeSql.Provider.SqlServer/SqlServerAdo/SqlServerAdo.cs
index 9266c037..40423ef5 100644
--- a/Providers/FreeSql.Provider.SqlServer/SqlServerAdo/SqlServerAdo.cs
+++ b/Providers/FreeSql.Provider.SqlServer/SqlServerAdo/SqlServerAdo.cs
@@ -94,7 +94,7 @@ namespace FreeSql.SqlServer
return new SqlCommand();
}
- protected override void ReturnConnection(IObjectPool pool, Object conn, Exception ex)
+ public override void ReturnConnection(IObjectPool pool, Object conn, Exception ex)
{
var rawPool = pool as SqlServerConnectionPool;
if (rawPool != null) rawPool.Return(conn, ex);
diff --git a/Providers/FreeSql.Provider.Sqlite/SqliteAdo/SqliteAdo.cs b/Providers/FreeSql.Provider.Sqlite/SqliteAdo/SqliteAdo.cs
index a911d9b1..a573432f 100644
--- a/Providers/FreeSql.Provider.Sqlite/SqliteAdo/SqliteAdo.cs
+++ b/Providers/FreeSql.Provider.Sqlite/SqliteAdo/SqliteAdo.cs
@@ -75,7 +75,7 @@ namespace FreeSql.Sqlite
return new SQLiteCommand();
}
- protected override void ReturnConnection(IObjectPool pool, Object conn, Exception ex)
+ public override void ReturnConnection(IObjectPool pool, Object conn, Exception ex)
{
var rawPool = pool as SqliteConnectionPool;
if (rawPool != null) rawPool.Return(conn, ex);