diff --git a/FreeSql/FreeSql.xml b/FreeSql/FreeSql.xml index 17e209b4..1a5086ea 100644 --- a/FreeSql/FreeSql.xml +++ b/FreeSql/FreeSql.xml @@ -2128,6 +2128,16 @@ 数据库类型 + + + UseConnectionString 时候的值 + + + + + UseSalve 时候的值 + + 开启事务(不支持异步),60秒未执行完成(可能)被其他线程事务自动提交 diff --git a/FreeSql/Interface/IAdo.cs b/FreeSql/Interface/IAdo.cs index d5ec0a8c..2cb27f7b 100644 --- a/FreeSql/Interface/IAdo.cs +++ b/FreeSql/Interface/IAdo.cs @@ -24,6 +24,14 @@ namespace FreeSql /// 数据库类型 /// DataType DataType { get; } + /// + /// UseConnectionString 时候的值 + /// + string ConnectionString { get; } + /// + /// UseSalve 时候的值 + /// + string[] SlaveConnectionStrings { get; } #region 事务 /// diff --git a/FreeSql/Internal/CommonProvider/AdoProvider/AdoProvider.cs b/FreeSql/Internal/CommonProvider/AdoProvider/AdoProvider.cs index 07d785ca..a5ebb8db 100644 --- a/FreeSql/Internal/CommonProvider/AdoProvider/AdoProvider.cs +++ b/FreeSql/Internal/CommonProvider/AdoProvider/AdoProvider.cs @@ -24,14 +24,18 @@ 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; } protected CommonUtils _util { get; set; } protected int slaveUnavailables = 0; private object slaveLock = new object(); private Random slaveRandom = new Random(); - public AdoProvider(DataType dataType) + public AdoProvider(DataType dataType, string connectionString, string[] slaveConnectionStrings) { this.DataType = dataType; + this.ConnectionString = connectionString; + this.SlaveConnectionStrings = slaveConnectionStrings; } void LoggerException(IObjectPool pool, PrepareCommandResult pc, Exception ex, DateTime dt, StringBuilder logtxt, bool isThrowException = true) diff --git a/Providers/FreeSql.Provider.MsAccess/MsAccessAdo/MsAccessAdo.cs b/Providers/FreeSql.Provider.MsAccess/MsAccessAdo/MsAccessAdo.cs index 195dbb9d..496e9d1e 100644 --- a/Providers/FreeSql.Provider.MsAccess/MsAccessAdo/MsAccessAdo.cs +++ b/Providers/FreeSql.Provider.MsAccess/MsAccessAdo/MsAccessAdo.cs @@ -13,8 +13,8 @@ namespace FreeSql.MsAccess { class MsAccessAdo : FreeSql.Internal.CommonProvider.AdoProvider { - public MsAccessAdo() : base(DataType.MsAccess) { } - public MsAccessAdo(CommonUtils util, string masterConnectionString, string[] slaveConnectionStrings, Func connectionFactory) : base(DataType.MsAccess) + public MsAccessAdo() : base(DataType.MsAccess, null, null) { } + public MsAccessAdo(CommonUtils util, string masterConnectionString, string[] slaveConnectionStrings, Func connectionFactory) : base(DataType.MsAccess, masterConnectionString, slaveConnectionStrings) { base._util = util; if (connectionFactory != null) diff --git a/Providers/FreeSql.Provider.MySql/MySqlAdo/MySqlAdo.cs b/Providers/FreeSql.Provider.MySql/MySqlAdo/MySqlAdo.cs index d6df8d17..2eeaa75b 100644 --- a/Providers/FreeSql.Provider.MySql/MySqlAdo/MySqlAdo.cs +++ b/Providers/FreeSql.Provider.MySql/MySqlAdo/MySqlAdo.cs @@ -13,8 +13,8 @@ namespace FreeSql.MySql class MySqlAdo : FreeSql.Internal.CommonProvider.AdoProvider { - public MySqlAdo() : base(DataType.MySql) { } - public MySqlAdo(CommonUtils util, string masterConnectionString, string[] slaveConnectionStrings, Func connectionFactory) : base(DataType.MySql) + public MySqlAdo() : base(DataType.MySql, null, null) { } + public MySqlAdo(CommonUtils util, string masterConnectionString, string[] slaveConnectionStrings, Func connectionFactory) : base(DataType.MySql, masterConnectionString, slaveConnectionStrings) { base._util = util; if (connectionFactory != null) diff --git a/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengAdo/OdbcDamengAdo.cs b/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengAdo/OdbcDamengAdo.cs index f485abe1..71547169 100644 --- a/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengAdo/OdbcDamengAdo.cs +++ b/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengAdo/OdbcDamengAdo.cs @@ -12,8 +12,8 @@ namespace FreeSql.Odbc.Dameng { class OdbcDamengAdo : FreeSql.Internal.CommonProvider.AdoProvider { - public OdbcDamengAdo() : base(DataType.OdbcDameng) { } - public OdbcDamengAdo(CommonUtils util, string masterConnectionString, string[] slaveConnectionStrings, Func connectionFactory) : base(DataType.OdbcDameng) + public OdbcDamengAdo() : base(DataType.OdbcDameng, null, null) { } + public OdbcDamengAdo(CommonUtils util, string masterConnectionString, string[] slaveConnectionStrings, Func connectionFactory) : base(DataType.OdbcDameng, masterConnectionString, slaveConnectionStrings) { base._util = util; if (connectionFactory != null) diff --git a/Providers/FreeSql.Provider.Odbc/Default/OdbcAdo/OdbcAdo.cs b/Providers/FreeSql.Provider.Odbc/Default/OdbcAdo/OdbcAdo.cs index f11b8b10..eb17053b 100644 --- a/Providers/FreeSql.Provider.Odbc/Default/OdbcAdo/OdbcAdo.cs +++ b/Providers/FreeSql.Provider.Odbc/Default/OdbcAdo/OdbcAdo.cs @@ -12,8 +12,8 @@ namespace FreeSql.Odbc.Default { class OdbcAdo : FreeSql.Internal.CommonProvider.AdoProvider { - public OdbcAdo() : base(DataType.Odbc) { } - public OdbcAdo(CommonUtils util, string masterConnectionString, string[] slaveConnectionStrings, Func connectionFactory) : base(DataType.Odbc) + public OdbcAdo() : base(DataType.Odbc, null, null) { } + public OdbcAdo(CommonUtils util, string masterConnectionString, string[] slaveConnectionStrings, Func connectionFactory) : base(DataType.Odbc, masterConnectionString, slaveConnectionStrings) { base._util = util; if (connectionFactory != null) diff --git a/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlAdo/OdbcMySqlAdo.cs b/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlAdo/OdbcMySqlAdo.cs index 94921b95..41aa2ed3 100644 --- a/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlAdo/OdbcMySqlAdo.cs +++ b/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlAdo/OdbcMySqlAdo.cs @@ -13,8 +13,8 @@ namespace FreeSql.Odbc.MySql class OdbcMySqlAdo : FreeSql.Internal.CommonProvider.AdoProvider { - public OdbcMySqlAdo() : base(DataType.OdbcMySql) { } - public OdbcMySqlAdo(CommonUtils util, string masterConnectionString, string[] slaveConnectionStrings, Func connectionFactory) : base(DataType.OdbcMySql) + public OdbcMySqlAdo() : base(DataType.OdbcMySql, null, null) { } + public OdbcMySqlAdo(CommonUtils util, string masterConnectionString, string[] slaveConnectionStrings, Func connectionFactory) : base(DataType.OdbcMySql, masterConnectionString, slaveConnectionStrings) { base._util = util; if (connectionFactory != null) diff --git a/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleAdo/OdbcOracleAdo.cs b/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleAdo/OdbcOracleAdo.cs index bb33aa87..699f2912 100644 --- a/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleAdo/OdbcOracleAdo.cs +++ b/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleAdo/OdbcOracleAdo.cs @@ -12,8 +12,8 @@ namespace FreeSql.Odbc.Oracle { class OdbcOracleAdo : FreeSql.Internal.CommonProvider.AdoProvider { - public OdbcOracleAdo() : base(DataType.OdbcOracle) { } - public OdbcOracleAdo(CommonUtils util, string masterConnectionString, string[] slaveConnectionStrings, Func connectionFactory) : base(DataType.OdbcOracle) + public OdbcOracleAdo() : base(DataType.OdbcOracle, null, null) { } + public OdbcOracleAdo(CommonUtils util, string masterConnectionString, string[] slaveConnectionStrings, Func connectionFactory) : base(DataType.OdbcOracle, masterConnectionString, slaveConnectionStrings) { base._util = util; if (connectionFactory != null) diff --git a/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLAdo/OdbcPostgreSQLAdo.cs b/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLAdo/OdbcPostgreSQLAdo.cs index 60361f3e..d37dc5ba 100644 --- a/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLAdo/OdbcPostgreSQLAdo.cs +++ b/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLAdo/OdbcPostgreSQLAdo.cs @@ -13,8 +13,8 @@ namespace FreeSql.Odbc.PostgreSQL { class OdbcPostgreSQLAdo : FreeSql.Internal.CommonProvider.AdoProvider { - public OdbcPostgreSQLAdo() : base(DataType.OdbcPostgreSQL) { } - public OdbcPostgreSQLAdo(CommonUtils util, string masterConnectionString, string[] slaveConnectionStrings, Func connectionFactory) : base(DataType.OdbcPostgreSQL) + public OdbcPostgreSQLAdo() : base(DataType.OdbcPostgreSQL, null, null) { } + public OdbcPostgreSQLAdo(CommonUtils util, string masterConnectionString, string[] slaveConnectionStrings, Func connectionFactory) : base(DataType.OdbcPostgreSQL, masterConnectionString, slaveConnectionStrings) { base._util = util; if (connectionFactory != null) diff --git a/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerAdo/OdbcSqlServerAdo.cs b/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerAdo/OdbcSqlServerAdo.cs index 9f2f291e..0bba96e3 100644 --- a/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerAdo/OdbcSqlServerAdo.cs +++ b/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerAdo/OdbcSqlServerAdo.cs @@ -13,8 +13,8 @@ namespace FreeSql.Odbc.SqlServer { class OdbcSqlServerAdo : FreeSql.Internal.CommonProvider.AdoProvider { - public OdbcSqlServerAdo() : base(DataType.OdbcSqlServer) { } - public OdbcSqlServerAdo(CommonUtils util, string masterConnectionString, string[] slaveConnectionStrings, Func connectionFactory) : base(DataType.OdbcSqlServer) + public OdbcSqlServerAdo() : base(DataType.OdbcSqlServer, null, null) { } + public OdbcSqlServerAdo(CommonUtils util, string masterConnectionString, string[] slaveConnectionStrings, Func connectionFactory) : base(DataType.OdbcSqlServer, masterConnectionString, slaveConnectionStrings) { base._util = util; if (connectionFactory != null) diff --git a/Providers/FreeSql.Provider.Oracle/OracleAdo/OracleAdo.cs b/Providers/FreeSql.Provider.Oracle/OracleAdo/OracleAdo.cs index 791f4f7b..59ac3c98 100644 --- a/Providers/FreeSql.Provider.Oracle/OracleAdo/OracleAdo.cs +++ b/Providers/FreeSql.Provider.Oracle/OracleAdo/OracleAdo.cs @@ -12,8 +12,8 @@ namespace FreeSql.Oracle { class OracleAdo : FreeSql.Internal.CommonProvider.AdoProvider { - public OracleAdo() : base(DataType.Oracle) { } - public OracleAdo(CommonUtils util, string masterConnectionString, string[] slaveConnectionStrings, Func connectionFactory) : base(DataType.Oracle) + public OracleAdo() : base(DataType.Oracle, null, null) { } + public OracleAdo(CommonUtils util, string masterConnectionString, string[] slaveConnectionStrings, Func connectionFactory) : base(DataType.Oracle, masterConnectionString, slaveConnectionStrings) { base._util = util; if (connectionFactory != null) diff --git a/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLAdo/PostgreSQLAdo.cs b/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLAdo/PostgreSQLAdo.cs index 5f1600b9..3e9423dc 100644 --- a/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLAdo/PostgreSQLAdo.cs +++ b/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLAdo/PostgreSQLAdo.cs @@ -14,8 +14,8 @@ namespace FreeSql.PostgreSQL { class PostgreSQLAdo : FreeSql.Internal.CommonProvider.AdoProvider { - public PostgreSQLAdo() : base(DataType.PostgreSQL) { } - public PostgreSQLAdo(CommonUtils util, string masterConnectionString, string[] slaveConnectionStrings, Func connectionFactory) : base(DataType.PostgreSQL) + public PostgreSQLAdo() : base(DataType.PostgreSQL, null, null) { } + public PostgreSQLAdo(CommonUtils util, string masterConnectionString, string[] slaveConnectionStrings, Func connectionFactory) : base(DataType.PostgreSQL, masterConnectionString, slaveConnectionStrings) { base._util = util; if (connectionFactory != null) diff --git a/Providers/FreeSql.Provider.SqlServer/SqlServerAdo/SqlServerAdo.cs b/Providers/FreeSql.Provider.SqlServer/SqlServerAdo/SqlServerAdo.cs index 08bce9b7..ea278f04 100644 --- a/Providers/FreeSql.Provider.SqlServer/SqlServerAdo/SqlServerAdo.cs +++ b/Providers/FreeSql.Provider.SqlServer/SqlServerAdo/SqlServerAdo.cs @@ -13,8 +13,8 @@ namespace FreeSql.SqlServer { class SqlServerAdo : FreeSql.Internal.CommonProvider.AdoProvider { - public SqlServerAdo() : base(DataType.SqlServer) { } - public SqlServerAdo(CommonUtils util, string masterConnectionString, string[] slaveConnectionStrings, Func connectionFactory) : base(DataType.SqlServer) + public SqlServerAdo() : base(DataType.SqlServer, null, null) { } + public SqlServerAdo(CommonUtils util, string masterConnectionString, string[] slaveConnectionStrings, Func connectionFactory) : base(DataType.SqlServer, masterConnectionString, slaveConnectionStrings) { base._util = util; if (connectionFactory != null) diff --git a/Providers/FreeSql.Provider.Sqlite/SqliteAdo/SqliteAdo.cs b/Providers/FreeSql.Provider.Sqlite/SqliteAdo/SqliteAdo.cs index 357b87b8..c1cc9252 100644 --- a/Providers/FreeSql.Provider.Sqlite/SqliteAdo/SqliteAdo.cs +++ b/Providers/FreeSql.Provider.Sqlite/SqliteAdo/SqliteAdo.cs @@ -13,8 +13,8 @@ namespace FreeSql.Sqlite { class SqliteAdo : FreeSql.Internal.CommonProvider.AdoProvider { - public SqliteAdo() : base(DataType.Sqlite) { } - public SqliteAdo(CommonUtils util, string masterConnectionString, string[] slaveConnectionStrings, Func connectionFactory) : base(DataType.Sqlite) + public SqliteAdo() : base(DataType.Sqlite, null, null) { } + public SqliteAdo(CommonUtils util, string masterConnectionString, string[] slaveConnectionStrings, Func connectionFactory) : base(DataType.Sqlite, masterConnectionString, slaveConnectionStrings) { base._util = util; if (connectionFactory != null)