From 8f9efe1f11aa5c744ef24313509fc189d366d2aa Mon Sep 17 00:00:00 2001
From: 28810 <28810@YEXIANGQIN>
Date: Fri, 18 Sep 2020 09:00:01 +0800
Subject: [PATCH] =?UTF-8?q?-=20=E5=A2=9E=E5=8A=A0=20ISelect/IInsert/IUpdat?=
=?UTF-8?q?e/IDelete=20CommandTimeout=20=E6=96=B9=E6=B3=95=E8=AE=BE?=
=?UTF-8?q?=E7=BD=AE=E5=91=BD=E4=BB=A4=E8=B6=85=E6=97=B6=EF=BC=9B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
FreeSql.DbContext/FreeSql.DbContext.xml | 7 +
FreeSql/FreeSql.xml | 41 ++++-
FreeSql/Interface/Curd/IDelete.cs | 6 +
FreeSql/Interface/Curd/IInsert.cs | 6 +
FreeSql/Interface/Curd/IInsertOrUpdate.cs | 6 +
FreeSql/Interface/Curd/ISelect/ISelect0.cs | 6 +
FreeSql/Interface/Curd/IUpdate.cs | 6 +
FreeSql/Interface/IAdo.cs | 54 +++---
.../CommonProvider/AdoProvider/AdoProvider.cs | 171 +++++++++---------
.../AdoProvider/AdoProviderAsync.cs | 171 +++++++++---------
.../Internal/CommonProvider/DeleteProvider.cs | 8 +-
.../CommonProvider/DeleteProviderAsync.cs | 2 +-
.../CommonProvider/InsertOrUpdateProvider.cs | 10 +-
.../Internal/CommonProvider/InsertProvider.cs | 8 +-
.../CommonProvider/InsertProviderAsync.cs | 2 +-
.../SelectProvider/Select0Provider.cs | 6 +
.../SelectProvider/Select0ProviderReader.cs | 32 ++--
.../SelectProvider/SelectGroupingProvider.cs | 4 +-
.../Internal/CommonProvider/UpdateProvider.cs | 8 +-
.../CommonProvider/UpdateProviderAsync.cs | 2 +-
.../Curd/DamengInsert.cs | 8 +-
.../Curd/FirebirdDelete.cs | 4 +-
.../Curd/FirebirdInsert.cs | 12 +-
.../Curd/FirebirdUpdate.cs | 4 +-
.../Curd/KingbaseESDelete.cs | 4 +-
.../Curd/KingbaseESInsert.cs | 12 +-
.../Curd/KingbaseESOnConflictDoUpdate.cs | 4 +-
.../Curd/KingbaseESUpdate.cs | 4 +-
.../Curd/MsAccessInsert.cs | 20 +-
.../Curd/MySqlDelete.cs | 4 +-
.../Curd/MySqlInsert.cs | 8 +-
.../Curd/MySqlUpdate.cs | 4 +-
.../Curd/OnDuplicateKeyUpdate.cs | 4 +-
.../Dameng/Curd/OdbcDamengInsert.cs | 8 +-
.../Default/Curd/OdbcInsert.cs | 8 +-
.../KingbaseES/Curd/OdbcKingbaseESDelete.cs | 4 +-
.../KingbaseES/Curd/OdbcKingbaseESInsert.cs | 12 +-
.../Curd/OdbcKingbaseESOnConflictDoUpdate.cs | 4 +-
.../KingbaseES/Curd/OdbcKingbaseESUpdate.cs | 4 +-
.../MySql/Curd/OdbcMySqlDelete.cs | 4 +-
.../MySql/Curd/OdbcMySqlInsert.cs | 14 +-
.../Curd/OdbcMySqlOnDuplicateKeyUpdate.cs | 4 +-
.../MySql/Curd/OdbcMySqlUpdate.cs | 4 +-
.../Oracle/Curd/OdbcOracleInsert.cs | 8 +-
.../PostgreSQL/Curd/OdbcPostgreSQLDelete.cs | 4 +-
.../PostgreSQL/Curd/OdbcPostgreSQLInsert.cs | 12 +-
.../Curd/OdbcPostgreSQLOnConflictDoUpdate.cs | 4 +-
.../PostgreSQL/Curd/OdbcPostgreSQLUpdate.cs | 4 +-
.../SqlServer/Curd/OdbcSqlServerDelete.cs | 4 +-
.../SqlServer/Curd/OdbcSqlServerInsert.cs | 8 +-
.../SqlServer/Curd/OdbcSqlServerUpdate.cs | 4 +-
.../Curd/OracleInsert.cs | 8 +-
.../Curd/OnConflictDoUpdate.cs | 4 +-
.../Curd/PostgreSQLDelete.cs | 4 +-
.../Curd/PostgreSQLInsert.cs | 12 +-
.../Curd/PostgreSQLUpdate.cs | 4 +-
.../Curd/ShenTongDelete.cs | 4 +-
.../Curd/ShenTongInsert.cs | 12 +-
.../Curd/ShenTongUpdate.cs | 4 +-
.../Curd/SqlServerDelete.cs | 4 +-
.../Curd/SqlServerInsert.cs | 8 +-
.../Curd/SqlServerUpdate.cs | 4 +-
.../Curd/SqliteInsert.cs | 4 +-
63 files changed, 471 insertions(+), 363 deletions(-)
diff --git a/FreeSql.DbContext/FreeSql.DbContext.xml b/FreeSql.DbContext/FreeSql.DbContext.xml
index 5a0c8bd0..9c6cd88b 100644
--- a/FreeSql.DbContext/FreeSql.DbContext.xml
+++ b/FreeSql.DbContext/FreeSql.DbContext.xml
@@ -130,6 +130,13 @@
清空状态数据
+
+
+ 根据 lambda 条件删除数据
+
+
+
+
添加
diff --git a/FreeSql/FreeSql.xml b/FreeSql/FreeSql.xml
index 8869f42b..79039cd6 100644
--- a/FreeSql/FreeSql.xml
+++ b/FreeSql/FreeSql.xml
@@ -1267,6 +1267,13 @@
+
+
+ 命令超时设置(秒)
+
+
+
+
lambda表达式条件,仅支持实体基础成员(不包含导航对象)
@@ -1369,6 +1376,13 @@
+
+
+ 命令超时设置(秒)
+
+
+
+
追加准备插入的实体
@@ -1517,6 +1531,13 @@
+
+
+ 命令超时设置(秒)
+
+
+
+
添加或更新,设置实体
@@ -1603,6 +1624,13 @@
+
+
+ 命令超时设置(秒)
+
+
+
+
审核或跟踪 ToList 即将返回的数据
@@ -2461,6 +2489,13 @@
+
+
+ 命令超时设置(秒)
+
+
+
+
不使用参数化,可通过 IFreeSql.CodeFirst.IsNotCommandParameter 全局性设置
@@ -2751,12 +2786,13 @@
new { id = 1 } 或者 Dictionary<string, object>
-
+
测试数据库是否连接正确,本方法执行如下命令:
MySql/SqlServer/PostgreSQL/达梦/人大金仓/神通: SELECT 1
Oracle: SELECT 1 FROM dual
+ 命令超时设置(秒)
true: 成功, false: 失败
@@ -2898,12 +2934,13 @@
-
+
测试数据库是否连接正确,本方法执行如下命令:
MySql/SqlServer/PostgreSQL/达梦/人大金仓/神通: SELECT 1
Oracle: SELECT 1 FROM dual
+ 命令超时设置(秒)
true: 成功, false: 失败
diff --git a/FreeSql/Interface/Curd/IDelete.cs b/FreeSql/Interface/Curd/IDelete.cs
index 09515f8a..de01bf23 100644
--- a/FreeSql/Interface/Curd/IDelete.cs
+++ b/FreeSql/Interface/Curd/IDelete.cs
@@ -21,6 +21,12 @@ namespace FreeSql
///
///
IDelete WithConnection(DbConnection connection);
+ ///
+ /// 命令超时设置(秒)
+ ///
+ ///
+ ///
+ IDelete CommandTimeout(int timeout);
///
/// lambda表达式条件,仅支持实体基础成员(不包含导航对象)
diff --git a/FreeSql/Interface/Curd/IInsert.cs b/FreeSql/Interface/Curd/IInsert.cs
index 739c046d..234495ae 100644
--- a/FreeSql/Interface/Curd/IInsert.cs
+++ b/FreeSql/Interface/Curd/IInsert.cs
@@ -23,6 +23,12 @@ namespace FreeSql
///
///
IInsert WithConnection(DbConnection connection);
+ ///
+ /// 命令超时设置(秒)
+ ///
+ ///
+ ///
+ IInsert CommandTimeout(int timeout);
///
/// 追加准备插入的实体
diff --git a/FreeSql/Interface/Curd/IInsertOrUpdate.cs b/FreeSql/Interface/Curd/IInsertOrUpdate.cs
index 53698f3f..0299d065 100644
--- a/FreeSql/Interface/Curd/IInsertOrUpdate.cs
+++ b/FreeSql/Interface/Curd/IInsertOrUpdate.cs
@@ -21,6 +21,12 @@ namespace FreeSql
///
///
IInsertOrUpdate WithConnection(DbConnection connection);
+ ///
+ /// 命令超时设置(秒)
+ ///
+ ///
+ ///
+ IInsertOrUpdate CommandTimeout(int timeout);
///
/// 添加或更新,设置实体
diff --git a/FreeSql/Interface/Curd/ISelect/ISelect0.cs b/FreeSql/Interface/Curd/ISelect/ISelect0.cs
index 3e7fee26..7180b408 100644
--- a/FreeSql/Interface/Curd/ISelect/ISelect0.cs
+++ b/FreeSql/Interface/Curd/ISelect/ISelect0.cs
@@ -39,6 +39,12 @@ namespace FreeSql
///
///
TSelect WithConnection(DbConnection connection);
+ ///
+ /// 命令超时设置(秒)
+ ///
+ ///
+ ///
+ TSelect CommandTimeout(int timeout);
///
/// 审核或跟踪 ToList 即将返回的数据
diff --git a/FreeSql/Interface/Curd/IUpdate.cs b/FreeSql/Interface/Curd/IUpdate.cs
index 49acf355..ed4ece43 100644
--- a/FreeSql/Interface/Curd/IUpdate.cs
+++ b/FreeSql/Interface/Curd/IUpdate.cs
@@ -22,6 +22,12 @@ namespace FreeSql
///
///
IUpdate WithConnection(DbConnection connection);
+ ///
+ /// 命令超时设置(秒)
+ ///
+ ///
+ ///
+ IUpdate CommandTimeout(int timeout);
///
/// 不使用参数化,可通过 IFreeSql.CodeFirst.IsNotCommandParameter 全局性设置
diff --git a/FreeSql/Interface/IAdo.cs b/FreeSql/Interface/IAdo.cs
index 238bfc04..a0e5dde9 100644
--- a/FreeSql/Interface/IAdo.cs
+++ b/FreeSql/Interface/IAdo.cs
@@ -67,8 +67,9 @@ namespace FreeSql
/// MySql/SqlServer/PostgreSQL/达梦/人大金仓/神通: SELECT 1
/// Oracle: SELECT 1 FROM dual
///
+ /// 命令超时设置(秒)
/// true: 成功, false: 失败
- bool ExecuteConnectTest();
+ bool ExecuteConnectTest(int commandTimeout = 0);
///
/// 查询,若使用读写分离,查询【从库】条件cmdText.StartsWith("SELECT "),否则查询【主库】
@@ -79,7 +80,7 @@ namespace FreeSql
///
void ExecuteReader(Action> fetchHandler, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
void ExecuteReader(DbTransaction transaction, Action> fetchHandler, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
- void ExecuteReader(DbConnection connection, DbTransaction transaction, Action> fetchHandler, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
+ void ExecuteReader(DbConnection connection, DbTransaction transaction, Action> fetchHandler, CommandType cmdType, string cmdText, int cmdTimeout, params DbParameter[] cmdParms);
///
/// 查询,ExecuteReader(dr => {}, "select * from user where age > ?age", new { age = 25 })
/// 提示:parms 参数还可以传 Dictionary<string, object>
@@ -96,7 +97,7 @@ namespace FreeSql
///
object[][] ExecuteArray(CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
object[][] ExecuteArray(DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
- object[][] ExecuteArray(DbConnection connection, DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
+ object[][] ExecuteArray(DbConnection connection, DbTransaction transaction, CommandType cmdType, string cmdText, int cmdTimeout, params DbParameter[] cmdParms);
///
/// 查询,ExecuteArray("select * from user where age > ?age", new { age = 25 })
/// 提示:parms 参数还可以传 Dictionary<string, object>
@@ -114,7 +115,7 @@ namespace FreeSql
///
DataSet ExecuteDataSet(CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
DataSet ExecuteDataSet(DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
- DataSet ExecuteDataSet(DbConnection connection, DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
+ DataSet ExecuteDataSet(DbConnection connection, DbTransaction transaction, CommandType cmdType, string cmdText, int cmdTimeout, params DbParameter[] cmdParms);
///
/// 查询,ExecuteDataSet("select * from user where age > ?age; select 2", new { age = 25 })
/// 提示:parms 参数还可以传 Dictionary<string, object>
@@ -132,7 +133,7 @@ namespace FreeSql
///
DataTable ExecuteDataTable(CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
DataTable ExecuteDataTable(DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
- DataTable ExecuteDataTable(DbConnection connection, DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
+ DataTable ExecuteDataTable(DbConnection connection, DbTransaction transaction, CommandType cmdType, string cmdText, int cmdTimeout, params DbParameter[] cmdParms);
///
/// 查询,ExecuteDataTable("select * from user where age > ?age", new { age = 25 })
/// 提示:parms 参数还可以传 Dictionary<string, object>
@@ -151,7 +152,7 @@ namespace FreeSql
///
int ExecuteNonQuery(CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
int ExecuteNonQuery(DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
- int ExecuteNonQuery(DbConnection connection, DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
+ int ExecuteNonQuery(DbConnection connection, DbTransaction transaction, CommandType cmdType, string cmdText, int cmdTimeout, params DbParameter[] cmdParms);
///
/// 在【主库】执行,ExecuteNonQuery("delete from user where age > ?age", new { age = 25 })
/// 提示:parms 参数还可以传 Dictionary<string, object>
@@ -170,7 +171,7 @@ namespace FreeSql
///
object ExecuteScalar(CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
object ExecuteScalar(DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
- object ExecuteScalar(DbConnection connection, DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
+ object ExecuteScalar(DbConnection connection, DbTransaction transaction, CommandType cmdType, string cmdText, int cmdTimeout, params DbParameter[] cmdParms);
///
/// 在【主库】执行,ExecuteScalar("select 1 from user where age > ?age", new { age = 25 })
/// 提示:parms 参数还可以传 Dictionary<string, object>
@@ -192,8 +193,8 @@ namespace FreeSql
///
List Query(CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
List Query(DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
- List Query(DbConnection connection, DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
- List Query(Type resultType, DbConnection connection, DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
+ List Query(DbConnection connection, DbTransaction transaction, CommandType cmdType, string cmdText, int cmdTimeout, params DbParameter[] cmdParms);
+ List Query(Type resultType, DbConnection connection, DbTransaction transaction, CommandType cmdType, string cmdText, int cmdTimeout, params DbParameter[] cmdParms);
///
/// 执行SQL返回对象集合,Query<User>("select * from user where age > ?age", new { age = 25 })
/// 提示:parms 参数还可以传 Dictionary<string, object>
@@ -216,7 +217,7 @@ namespace FreeSql
///
NativeTuple, List> Query(CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
NativeTuple, List> Query(DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
- NativeTuple, List> Query(DbConnection connection, DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
+ NativeTuple, List> Query(DbConnection connection, DbTransaction transaction, CommandType cmdType, string cmdText, int cmdTimeout, params DbParameter[] cmdParms);
///
/// 执行SQL返回对象集合,Query<User>("select * from user where age > ?age; select * from address", new { age = 25 })
/// 提示:parms 参数还可以传 Dictionary<string, object>
@@ -231,19 +232,19 @@ namespace FreeSql
NativeTuple, List, List> Query(CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
NativeTuple, List, List> Query(DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
- NativeTuple, List, List> Query(DbConnection connection, DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
+ NativeTuple, List, List> Query(DbConnection connection, DbTransaction transaction, CommandType cmdType, string cmdText, int cmdTimeout, params DbParameter[] cmdParms);
NativeTuple, List, List> Query(string cmdText, object parms = null);
NativeTuple, List, List> Query(DbTransaction transaction, string cmdText, object parms = null);
NativeTuple, List, List> Query(DbConnection connection, DbTransaction transaction, string cmdText, object parms = null);
NativeTuple, List, List, List> Query(CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
NativeTuple, List, List, List> Query(DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
- NativeTuple, List, List, List> Query(DbConnection connection, DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
+ NativeTuple, List, List, List> Query(DbConnection connection, DbTransaction transaction, CommandType cmdType, string cmdText, int cmdTimeout, params DbParameter[] cmdParms);
NativeTuple, List, List, List> Query(string cmdText, object parms = null);
NativeTuple, List, List, List> Query(DbTransaction transaction, string cmdText, object parms = null);
NativeTuple, List, List, List> Query(DbConnection connection, DbTransaction transaction, string cmdText, object parms = null);
NativeTuple, List, List, List, List> Query(CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
NativeTuple, List, List, List, List> Query(DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
- NativeTuple, List, List, List, List> Query(DbConnection connection, DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
+ NativeTuple, List, List, List, List> Query(DbConnection connection, DbTransaction transaction, CommandType cmdType, string cmdText, int cmdTimeout, params DbParameter[] cmdParms);
NativeTuple, List, List, List, List> Query(string cmdText, object parms = null);
NativeTuple, List, List, List, List> Query(DbTransaction transaction, string cmdText, object parms = null);
NativeTuple, List, List, List, List> Query(DbConnection connection, DbTransaction transaction, string cmdText, object parms = null);
@@ -256,8 +257,9 @@ namespace FreeSql
/// MySql/SqlServer/PostgreSQL/达梦/人大金仓/神通: SELECT 1
/// Oracle: SELECT 1 FROM dual
///
+ /// 命令超时设置(秒)
/// true: 成功, false: 失败
- Task ExecuteConnectTestAsync();
+ Task ExecuteConnectTestAsync(int commandTimeout = 0);
///
/// 查询,若使用读写分离,查询【从库】条件cmdText.StartsWith("SELECT "),否则查询【主库】
@@ -268,7 +270,7 @@ namespace FreeSql
///
Task ExecuteReaderAsync(Func, Task> readerHander, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
Task ExecuteReaderAsync(DbTransaction transaction, Func, Task> readerHander, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
- Task ExecuteReaderAsync(DbConnection connection, DbTransaction transaction, Func, Task> readerHander, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
+ Task ExecuteReaderAsync(DbConnection connection, DbTransaction transaction, Func, Task> readerHander, CommandType cmdType, string cmdText, int cmdTimeout, params DbParameter[] cmdParms);
///
/// 查询,ExecuteReaderAsync(dr => {}, "select * from user where age > ?age", new { age = 25 })
/// 提示:parms 参数还可以传 Dictionary<string, object>
@@ -285,7 +287,7 @@ namespace FreeSql
///
Task