From d951b475d9b9e28a491a82ecc5963e7b8db5dcec Mon Sep 17 00:00:00 2001
From: 28810 <28810@YEXIANGQIN>
Date: Mon, 24 Aug 2020 12:39:22 +0800
Subject: [PATCH] =?UTF-8?q?-=20=E5=A2=9E=E5=8A=A0=20IAdo.ExecuteConnectTes?=
=?UTF-8?q?t=20=E5=BF=AB=E9=80=9F=E5=88=A4=E6=96=AD=E8=BF=9E=E6=8E=A5?=
=?UTF-8?q?=E6=98=AF=E5=90=A6=E5=8F=AF=E7=94=A8=20#113=EF=BC=9B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
FreeSql.DbContext/FreeSql.DbContext.xml | 9 ++++++++
.../MySqlConnectorAdo/MySqlAdoTest.cs | 5 +++++
.../Dameng/DamengAdo/DamengAdoTest.cs | 5 +++++
.../Default/OdbcAdo/OdbcAdoTest.cs | 5 +++++
.../KingbaseESAdo/KingbaseESAdoTest.cs | 5 +++++
.../MySql/MySqlAdo/MySqlAdoTest.cs | 5 +++++
.../Oracle/OracleAdo/OracleAdoTest.cs | 5 +++++
.../PostgreSQLAdo/PostgreSQLAdoTest.cs | 5 +++++
.../SqlServerAdo/SqlServerAdoTest.cs | 5 +++++
.../Dameng/DamengAdo/DamengAdoTest.cs | 5 +++++
.../MsAccess/MsAccessAdo/MsAccessAdoTest.cs | 6 ++++++
.../MySql/MySqlAdo/MySqlAdoTest.cs | 5 +++++
.../Oracle/OracleAdo/OracleAdoTest.cs | 5 +++++
.../PostgreSQLAdo/PostgreSQLAdoTest.cs | 5 +++++
.../ShenTong/ShenTongAdo/ShenTongAdoTest.cs | 5 +++++
.../SqlServerAdo/SqlServerAdoTest.cs | 5 +++++
.../Sqlite/SqliteAdo/SqliteAdoTest.cs | 6 ++++++
FreeSql/FreeSql.xml | 16 ++++++++++++++
FreeSql/Interface/IAdo.cs | 16 ++++++++++++++
.../CommonProvider/AdoProvider/AdoProvider.cs | 21 +++++++++++++++++++
.../AdoProvider/AdoProviderAsync.cs | 20 ++++++++++++++++++
21 files changed, 164 insertions(+)
diff --git a/FreeSql.DbContext/FreeSql.DbContext.xml b/FreeSql.DbContext/FreeSql.DbContext.xml
index 9c6cd88b..743835e4 100644
--- a/FreeSql.DbContext/FreeSql.DbContext.xml
+++ b/FreeSql.DbContext/FreeSql.DbContext.xml
@@ -532,5 +532,14 @@
+
+
+ 批量注入 Repository,可以参考代码自行调整
+
+
+
+
+
+
diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/MySqlConnectorAdo/MySqlAdoTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/MySqlConnectorAdo/MySqlAdoTest.cs
index 9fc81f4a..2b3d9f5c 100644
--- a/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/MySqlConnectorAdo/MySqlAdoTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/MySqlConnectorAdo/MySqlAdoTest.cs
@@ -18,6 +18,11 @@ namespace FreeSql.Tests.MySqlConnector
var t2 = g.mysql.Ado.SlavePools.Count;
}
+ [Fact]
+ public void ExecuteTest()
+ {
+ Assert.True(g.mysql.Ado.ExecuteConnectTest());
+ }
[Fact]
public void ExecuteReader()
{
diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Dameng/DamengAdo/DamengAdoTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Dameng/DamengAdo/DamengAdoTest.cs
index 408d4ee4..43f8191a 100644
--- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Dameng/DamengAdo/DamengAdoTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Dameng/DamengAdo/DamengAdoTest.cs
@@ -18,6 +18,11 @@ namespace FreeSql.Tests.Odbc.Dameng
var t2 = g.dameng.Ado.SlavePools.Count;
}
+ [Fact]
+ public void ExecuteTest()
+ {
+ Assert.True(g.dameng.Ado.ExecuteConnectTest());
+ }
[Fact]
public void ExecuteReader()
{
diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Default/OdbcAdo/OdbcAdoTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Default/OdbcAdo/OdbcAdoTest.cs
index 8a81857e..525d86a7 100644
--- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Default/OdbcAdo/OdbcAdoTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Default/OdbcAdo/OdbcAdoTest.cs
@@ -19,6 +19,11 @@ namespace FreeSql.Tests.Odbc.Default
var t2 = g.odbc.Ado.SlavePools.Count;
}
+ [Fact]
+ public void ExecuteTest()
+ {
+ Assert.True(g.odbc.Ado.ExecuteConnectTest());
+ }
[Fact]
public void ExecuteReader()
{
diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/KingbaseES/KingbaseESAdo/KingbaseESAdoTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/KingbaseES/KingbaseESAdo/KingbaseESAdoTest.cs
index f37a4b02..6b382d2f 100644
--- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/KingbaseES/KingbaseESAdo/KingbaseESAdoTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/KingbaseES/KingbaseESAdo/KingbaseESAdoTest.cs
@@ -18,6 +18,11 @@ namespace FreeSql.Tests.Odbc.KingbaseES
var t2 = g.kingbaseES.Ado.SlavePools.Count;
}
+ [Fact]
+ public void ExecuteTest()
+ {
+ Assert.True(g.kingbaseES.Ado.ExecuteConnectTest());
+ }
[Fact]
public void ExecuteReader()
{
diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/MySql/MySqlAdo/MySqlAdoTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/MySql/MySqlAdo/MySqlAdoTest.cs
index e38cd06b..0029774e 100644
--- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/MySql/MySqlAdo/MySqlAdoTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/MySql/MySqlAdo/MySqlAdoTest.cs
@@ -19,6 +19,11 @@ namespace FreeSql.Tests.Odbc.MySql
var t2 = g.mysql.Ado.SlavePools.Count;
}
+ [Fact]
+ public void ExecuteTest()
+ {
+ Assert.True(g.mysql.Ado.ExecuteConnectTest());
+ }
[Fact]
public void ExecuteReader()
{
diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/OracleAdo/OracleAdoTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/OracleAdo/OracleAdoTest.cs
index 419dac02..2c315e56 100644
--- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/OracleAdo/OracleAdoTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/OracleAdo/OracleAdoTest.cs
@@ -18,6 +18,11 @@ namespace FreeSql.Tests.Odbc.Oracle
var t2 = g.oracle.Ado.SlavePools.Count;
}
+ [Fact]
+ public void ExecuteTest()
+ {
+ Assert.True(g.oracle.Ado.ExecuteConnectTest());
+ }
[Fact]
public void ExecuteReader()
{
diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/PostgreSQL/PostgreSQLAdo/PostgreSQLAdoTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/PostgreSQL/PostgreSQLAdo/PostgreSQLAdoTest.cs
index 61f111de..82e59608 100644
--- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/PostgreSQL/PostgreSQLAdo/PostgreSQLAdoTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/PostgreSQL/PostgreSQLAdo/PostgreSQLAdoTest.cs
@@ -18,6 +18,11 @@ namespace FreeSql.Tests.Odbc.PostgreSQL
var t2 = g.pgsql.Ado.SlavePools.Count;
}
+ [Fact]
+ public void ExecuteTest()
+ {
+ Assert.True(g.pgsql.Ado.ExecuteConnectTest());
+ }
[Fact]
public void ExecuteReader()
{
diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/SqlServer/SqlServerAdo/SqlServerAdoTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/SqlServer/SqlServerAdo/SqlServerAdoTest.cs
index bdb889d9..24d3c318 100644
--- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/SqlServer/SqlServerAdo/SqlServerAdoTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/SqlServer/SqlServerAdo/SqlServerAdoTest.cs
@@ -20,6 +20,11 @@ namespace FreeSql.Tests.Odbc.SqlServer
var t2 = g.sqlserver.Ado.SlavePools.Count;
}
+ [Fact]
+ public void ExecuteTest()
+ {
+ Assert.True(g.sqlserver.Ado.ExecuteConnectTest());
+ }
[Fact]
public void ExecuteReader()
{
diff --git a/FreeSql.Tests/FreeSql.Tests/Dameng/DamengAdo/DamengAdoTest.cs b/FreeSql.Tests/FreeSql.Tests/Dameng/DamengAdo/DamengAdoTest.cs
index 796e0a6e..01f589f6 100644
--- a/FreeSql.Tests/FreeSql.Tests/Dameng/DamengAdo/DamengAdoTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/Dameng/DamengAdo/DamengAdoTest.cs
@@ -18,6 +18,11 @@ namespace FreeSql.Tests.Dameng
var t2 = g.dameng.Ado.SlavePools.Count;
}
+ [Fact]
+ public void ExecuteTest()
+ {
+ Assert.True(g.dameng.Ado.ExecuteConnectTest());
+ }
[Fact]
public void ExecuteReader()
{
diff --git a/FreeSql.Tests/FreeSql.Tests/MsAccess/MsAccessAdo/MsAccessAdoTest.cs b/FreeSql.Tests/FreeSql.Tests/MsAccess/MsAccessAdo/MsAccessAdoTest.cs
index fca67875..3e6ba0ef 100644
--- a/FreeSql.Tests/FreeSql.Tests/MsAccess/MsAccessAdo/MsAccessAdoTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/MsAccess/MsAccessAdo/MsAccessAdoTest.cs
@@ -17,6 +17,12 @@ namespace FreeSql.Tests.MsAccess
{
var t2 = g.msaccess.Ado.SlavePools.Count;
}
+
+ [Fact]
+ public void ExecuteTest()
+ {
+ Assert.True(g.msaccess.Ado.ExecuteConnectTest());
+ }
[Fact]
public void ExecuteReader()
{
diff --git a/FreeSql.Tests/FreeSql.Tests/MySql/MySqlAdo/MySqlAdoTest.cs b/FreeSql.Tests/FreeSql.Tests/MySql/MySqlAdo/MySqlAdoTest.cs
index ab37eda6..3ba3a825 100644
--- a/FreeSql.Tests/FreeSql.Tests/MySql/MySqlAdo/MySqlAdoTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/MySql/MySqlAdo/MySqlAdoTest.cs
@@ -18,6 +18,11 @@ namespace FreeSql.Tests.MySql
var t2 = g.mysql.Ado.SlavePools.Count;
}
+ [Fact]
+ public void ExecuteTest()
+ {
+ Assert.True(g.mysql.Ado.ExecuteConnectTest());
+ }
[Fact]
public void ExecuteReader()
{
diff --git a/FreeSql.Tests/FreeSql.Tests/Oracle/OracleAdo/OracleAdoTest.cs b/FreeSql.Tests/FreeSql.Tests/Oracle/OracleAdo/OracleAdoTest.cs
index a2c24d8e..ae86f397 100644
--- a/FreeSql.Tests/FreeSql.Tests/Oracle/OracleAdo/OracleAdoTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/Oracle/OracleAdo/OracleAdoTest.cs
@@ -18,6 +18,11 @@ namespace FreeSql.Tests.Oracle
var t2 = g.oracle.Ado.SlavePools.Count;
}
+ [Fact]
+ public void ExecuteTest()
+ {
+ Assert.True(g.oracle.Ado.ExecuteConnectTest());
+ }
[Fact]
public void ExecuteReader()
{
diff --git a/FreeSql.Tests/FreeSql.Tests/PostgreSQL/PostgreSQLAdo/PostgreSQLAdoTest.cs b/FreeSql.Tests/FreeSql.Tests/PostgreSQL/PostgreSQLAdo/PostgreSQLAdoTest.cs
index c84cf19d..aef0967d 100644
--- a/FreeSql.Tests/FreeSql.Tests/PostgreSQL/PostgreSQLAdo/PostgreSQLAdoTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/PostgreSQL/PostgreSQLAdo/PostgreSQLAdoTest.cs
@@ -18,6 +18,11 @@ namespace FreeSql.Tests.PostgreSQL
var t2 = g.pgsql.Ado.SlavePools.Count;
}
+ [Fact]
+ public void ExecuteTest()
+ {
+ Assert.True(g.pgsql.Ado.ExecuteConnectTest());
+ }
[Fact]
public void ExecuteReader()
{
diff --git a/FreeSql.Tests/FreeSql.Tests/ShenTong/ShenTongAdo/ShenTongAdoTest.cs b/FreeSql.Tests/FreeSql.Tests/ShenTong/ShenTongAdo/ShenTongAdoTest.cs
index 84daa489..dd62f210 100644
--- a/FreeSql.Tests/FreeSql.Tests/ShenTong/ShenTongAdo/ShenTongAdoTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/ShenTong/ShenTongAdo/ShenTongAdoTest.cs
@@ -18,6 +18,11 @@ namespace FreeSql.Tests.ShenTong
var t2 = g.shentong.Ado.SlavePools.Count;
}
+ [Fact]
+ public void ExecuteTest()
+ {
+ Assert.True(g.shentong.Ado.ExecuteConnectTest());
+ }
[Fact]
public void ExecuteReader()
{
diff --git a/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerAdo/SqlServerAdoTest.cs b/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerAdo/SqlServerAdoTest.cs
index e0a074d8..d366322c 100644
--- a/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerAdo/SqlServerAdoTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerAdo/SqlServerAdoTest.cs
@@ -29,6 +29,11 @@ namespace FreeSql.Tests.SqlServer
var t2 = g.sqlserver.Ado.SlavePools.Count;
}
+ [Fact]
+ public void ExecuteTest()
+ {
+ Assert.True(g.sqlserver.Ado.ExecuteConnectTest());
+ }
[Fact]
public void ExecuteReader()
{
diff --git a/FreeSql.Tests/FreeSql.Tests/Sqlite/SqliteAdo/SqliteAdoTest.cs b/FreeSql.Tests/FreeSql.Tests/Sqlite/SqliteAdo/SqliteAdoTest.cs
index 02bb40dc..004aec54 100644
--- a/FreeSql.Tests/FreeSql.Tests/Sqlite/SqliteAdo/SqliteAdoTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/Sqlite/SqliteAdo/SqliteAdoTest.cs
@@ -17,6 +17,12 @@ namespace FreeSql.Tests.Sqlite
{
var t2 = g.sqlite.Ado.SlavePools.Count;
}
+
+ [Fact]
+ public void ExecuteTest()
+ {
+ Assert.True(g.sqlite.Ado.ExecuteConnectTest());
+ }
[Fact]
public void ExecuteReader()
{
diff --git a/FreeSql/FreeSql.xml b/FreeSql/FreeSql.xml
index a5622151..b588f700 100644
--- a/FreeSql/FreeSql.xml
+++ b/FreeSql/FreeSql.xml
@@ -2479,6 +2479,14 @@
new { id = 1 } 或者 Dictionary<string, object>
+
+
+ 测试数据库是否连接正确,本方法执行如下命令:
+ MySql/SqlServer/PostgreSQL/达梦/人大金仓/神通: SELECT 1
+ Oracle: SELECT 1 FROM dual
+
+ true: 成功, false: 失败
+
查询,若使用读写分离,查询【从库】条件cmdText.StartsWith("SELECT "),否则查询【主库】
@@ -2618,6 +2626,14 @@
+
+
+ 测试数据库是否连接正确,本方法执行如下命令:
+ MySql/SqlServer/PostgreSQL/达梦/人大金仓/神通: SELECT 1
+ Oracle: SELECT 1 FROM dual
+
+ true: 成功, false: 失败
+
查询,若使用读写分离,查询【从库】条件cmdText.StartsWith("SELECT "),否则查询【主库】
diff --git a/FreeSql/Interface/IAdo.cs b/FreeSql/Interface/IAdo.cs
index afa01638..238bfc04 100644
--- a/FreeSql/Interface/IAdo.cs
+++ b/FreeSql/Interface/IAdo.cs
@@ -62,6 +62,14 @@ namespace FreeSql
///
DbParameter[] GetDbParamtersByObject(object obj);
+ ///
+ /// 测试数据库是否连接正确,本方法执行如下命令:
+ /// MySql/SqlServer/PostgreSQL/达梦/人大金仓/神通: SELECT 1
+ /// Oracle: SELECT 1 FROM dual
+ ///
+ /// true: 成功, false: 失败
+ bool ExecuteConnectTest();
+
///
/// 查询,若使用读写分离,查询【从库】条件cmdText.StartsWith("SELECT "),否则查询【主库】
///
@@ -243,6 +251,14 @@ namespace FreeSql
#if net40
#else
#region async
+ ///
+ /// 测试数据库是否连接正确,本方法执行如下命令:
+ /// MySql/SqlServer/PostgreSQL/达梦/人大金仓/神通: SELECT 1
+ /// Oracle: SELECT 1 FROM dual
+ ///
+ /// true: 成功, false: 失败
+ Task ExecuteConnectTestAsync();
+
///
/// 查询,若使用读写分离,查询【从库】条件cmdText.StartsWith("SELECT "),否则查询【主库】
///
diff --git a/FreeSql/Internal/CommonProvider/AdoProvider/AdoProvider.cs b/FreeSql/Internal/CommonProvider/AdoProvider/AdoProvider.cs
index 5d3100ad..921673f6 100644
--- a/FreeSql/Internal/CommonProvider/AdoProvider/AdoProvider.cs
+++ b/FreeSql/Internal/CommonProvider/AdoProvider/AdoProvider.cs
@@ -95,6 +95,27 @@ namespace FreeSql.Internal.CommonProvider
var props = tb?.Properties ?? type.GetPropertiesDictIgnoreCase();
return props;
}
+
+ public bool ExecuteConnectTest()
+ {
+ try
+ {
+ switch (DataType)
+ {
+ case DataType.Oracle:
+ case DataType.OdbcOracle:
+ ExecuteNonQuery(" SELECT 1 FROM dual");
+ return true;
+ }
+ ExecuteNonQuery(" SELECT 1");
+ return true;
+ }
+ catch
+ {
+ return false;
+ }
+ }
+
public List Query(string cmdText, object parms = null) => Query(null, null, null, CommandType.Text, cmdText, GetDbParamtersByObject(cmdText, parms));
public List Query(DbTransaction transaction, string cmdText, object parms = null) => Query(null, null, transaction, CommandType.Text, cmdText, GetDbParamtersByObject(cmdText, parms));
public List Query(DbConnection connection, DbTransaction transaction, string cmdText, object parms = null) => Query(null, connection, transaction, CommandType.Text, cmdText, GetDbParamtersByObject(cmdText, parms));
diff --git a/FreeSql/Internal/CommonProvider/AdoProvider/AdoProviderAsync.cs b/FreeSql/Internal/CommonProvider/AdoProvider/AdoProviderAsync.cs
index a16381b2..6d40ebcc 100644
--- a/FreeSql/Internal/CommonProvider/AdoProvider/AdoProviderAsync.cs
+++ b/FreeSql/Internal/CommonProvider/AdoProvider/AdoProviderAsync.cs
@@ -14,6 +14,26 @@ namespace FreeSql.Internal.CommonProvider
{
partial class AdoProvider
{
+ async public Task ExecuteConnectTestAsync()
+ {
+ try
+ {
+ switch (DataType)
+ {
+ case DataType.Oracle:
+ case DataType.OdbcOracle:
+ await ExecuteNonQueryAsync(" SELECT 1 FROM dual");
+ return true;
+ }
+ await ExecuteNonQueryAsync(" SELECT 1");
+ return true;
+ }
+ catch
+ {
+ return false;
+ }
+ }
+
public Task> QueryAsync(string cmdText, object parms = null) => QueryAsync(null, null, null, CommandType.Text, cmdText, GetDbParamtersByObject(cmdText, parms));
public Task> QueryAsync(DbTransaction transaction, string cmdText, object parms = null) => QueryAsync(null, null, transaction, CommandType.Text, cmdText, GetDbParamtersByObject(cmdText, parms));
public Task> QueryAsync(DbConnection connection, DbTransaction transaction, string cmdText, object parms = null) => QueryAsync(null, connection, transaction, CommandType.Text, cmdText, GetDbParamtersByObject(cmdText, parms));