diff --git a/Test/Program.cs b/Test/Program.cs
index 9ad798c1e..a98e6838f 100644
--- a/Test/Program.cs
+++ b/Test/Program.cs
@@ -142,8 +142,6 @@ public class Program
//};
//p.Insert();
- throw new Exception("error");
-
var list = Role.FindAll();
XTrace.WriteLine("Roles: {0}", list.Count);
diff --git a/Test/Test.csproj b/Test/Test.csproj
index 166c3ebe7..255aa91c0 100644
--- a/Test/Test.csproj
+++ b/Test/Test.csproj
@@ -37,11 +37,11 @@
-
-
-
-
-
+
+
+
+
+
diff --git a/XCode.MySql/XCode.MySql.csproj b/XCode.MySql/XCode.MySql.csproj
index a899552fa..fc1ef6b9e 100644
--- a/XCode.MySql/XCode.MySql.csproj
+++ b/XCode.MySql/XCode.MySql.csproj
@@ -1,6 +1,6 @@
- net452;net462;netstandard2.0;netstandard2.1
+ net462;netstandard2.0;netstandard2.1
数据中间件MySql包
引入MySql数据库驱动包
新生命开发团队
@@ -35,13 +35,10 @@
\
-
-
-
-
-
-
+
+
+
\ No newline at end of file
diff --git a/XCode.Oracle/XCode.Oracle.csproj b/XCode.Oracle/XCode.Oracle.csproj
index 975eb5747..48ce9b35a 100644
--- a/XCode.Oracle/XCode.Oracle.csproj
+++ b/XCode.Oracle/XCode.Oracle.csproj
@@ -36,7 +36,7 @@
-
+
diff --git a/XCode.PostgreSQL/XCode.PostgreSQL.csproj b/XCode.PostgreSQL/XCode.PostgreSQL.csproj
index 541698650..9da620f8f 100644
--- a/XCode.PostgreSQL/XCode.PostgreSQL.csproj
+++ b/XCode.PostgreSQL/XCode.PostgreSQL.csproj
@@ -36,7 +36,7 @@
-
+
diff --git a/XCode.SqlServer/XCode.SqlServer.csproj b/XCode.SqlServer/XCode.SqlServer.csproj
index a9950f780..b65185ab3 100644
--- a/XCode.SqlServer/XCode.SqlServer.csproj
+++ b/XCode.SqlServer/XCode.SqlServer.csproj
@@ -1,6 +1,6 @@
- net451;net461;netstandard2.0;netstandard2.1
+ net462;netstandard2.0;netstandard2.1
数据中间件SqlServer包
引入SqlServer数据库驱动包
新生命开发团队
@@ -36,7 +36,7 @@
-
+
diff --git a/XCode/DataAccessLayer/Common/DbBase.cs b/XCode/DataAccessLayer/Common/DbBase.cs
index bc4b9efb9..35ace1cf3 100755
--- a/XCode/DataAccessLayer/Common/DbBase.cs
+++ b/XCode/DataAccessLayer/Common/DbBase.cs
@@ -3,7 +3,6 @@ using System.Data;
using System.Data.Common;
using System.Runtime.InteropServices;
using System.Text.RegularExpressions;
-using NewLife;
using NewLife.Collections;
using NewLife.Log;
using NewLife.Reflection;
@@ -462,11 +461,22 @@ abstract class DbBase : DisposeBase, IDatabase
///
public static DbProviderFactory? GetProviderFactory(String? name, String assemblyFile, String className, Boolean strict = false, Boolean ignoreError = false)
{
+ // 支持adonet新的下载路径
+ var set = NewLife.Setting.Current;
+ var urls = set.PluginServer.Split([',', ';']).ToList();
+ var urls2 = new List();
+ foreach (var item in urls)
+ {
+ if (!item.EndsWithIgnoreCase("/adonet", "/adonet/"))
+ urls2.Add(item.TrimEnd('/') + "/adonet");
+ }
+ urls2.AddRange(urls);
+
try
{
if (name.IsNullOrEmpty()) name = Path.GetFileNameWithoutExtension(assemblyFile);
var links = GetLinkNames(name, strict);
- var type = PluginHelper.LoadPlugin(className, null, assemblyFile, links.Join(","));
+ var type = PluginHelper.LoadPlugin(className, null, assemblyFile, links.Join(","), urls2.Join(";"));
var factory = GetProviderFactory(type);
if (factory != null) return factory;
diff --git a/XCode/DataAccessLayer/Database/MySql.cs b/XCode/DataAccessLayer/Database/MySql.cs
index 9058288dd..f43f2bdd0 100755
--- a/XCode/DataAccessLayer/Database/MySql.cs
+++ b/XCode/DataAccessLayer/Database/MySql.cs
@@ -23,12 +23,21 @@ internal class MySql : RemoteDb
var factory = GetProviderFactory(type);
if (factory != null) return factory;
+#if NETSTANDARD
+ type = PluginHelper.LoadPlugin("MySqlConnector.MySqlConnectorFactory", null, "MySqlConnector.dll", null);
+ factory = GetProviderFactory(type);
+ if (factory != null) return factory;
+#endif
+
type = PluginHelper.LoadPlugin("MySql.Data.MySqlClient.MySqlClientFactory", null, "MySql.Data.dll", null);
factory = GetProviderFactory(type);
if (factory != null) return factory;
// MewLife.MySql 在开发过程中,数据驱动下载站点没有它的包,暂时不支持下载
- return GetProviderFactory("NewLife.MySql", "NewLife.MySql.dll", "NewLife.MySql.MySqlClientFactory", true, true) ??
+ return GetProviderFactory(null, "NewLife.MySql.dll", "NewLife.MySql.MySqlClientFactory", true, true) ??
+#if NETSTANDARD
+ GetProviderFactory(null, "MySqlConnector.dll", "MySqlConnector.MySqlConnectorFactory", true, true) ??
+#endif
GetProviderFactory(null, "MySql.Data.dll", "MySql.Data.MySqlClient.MySqlClientFactory");
}
@@ -695,6 +704,13 @@ internal class MySqlMetaData : RemoteDbMetaData
protected override Boolean DatabaseExist(String databaseName)
{
+ // MySqlConnector 不支持获取单个数据库架构,需要整体获取后再过滤
+ if (Database.Factory.GetType().Name.Contains("MySqlConnector"))
+ {
+ var dbs = GetSchema(_.Databases, null);
+ return dbs != null && dbs.Select($"schema_name='{databaseName}'").Length > 0;
+ }
+
var dt = GetSchema(_.Databases, [databaseName]);
return dt != null && dt.Rows != null && dt.Rows.Count > 0;
}
diff --git a/XCode/XCode.csproj b/XCode/XCode.csproj
index 2a7466999..ec6ad8521 100644
--- a/XCode/XCode.csproj
+++ b/XCode/XCode.csproj
@@ -46,7 +46,7 @@
-
+
diff --git a/XUnitTest.XCode/DataAccessLayer/MySqlTests.cs b/XUnitTest.XCode/DataAccessLayer/MySqlTests.cs
index 8f085fb22..f28978822 100644
--- a/XUnitTest.XCode/DataAccessLayer/MySqlTests.cs
+++ b/XUnitTest.XCode/DataAccessLayer/MySqlTests.cs
@@ -83,9 +83,9 @@ public class MySqlTests
using var conn = db.OpenConnection();
connstr = conn.ConnectionString;
//Assert.EndsWith("characterset=utf8mb4;sslmode=Disabled;allowpublickeyretrieval=True", connstr);
- Assert.Contains("characterset=utf8mb4", connstr);
- Assert.Contains("sslmode=", connstr);
- Assert.Contains("allowpublickeyretrieval=True", connstr);
+ Assert.Contains("=utf8mb4", connstr);
+ //Assert.Contains("sslmode=", connstr);
+ //Assert.Contains("allowpublickeyretrieval=True", connstr);
var ver = db.ServerVersion;
Assert.NotEmpty(ver);
@@ -119,7 +119,10 @@ public class MySqlTests
{
dal.Execute("drop database membership_test");
}
- catch (Exception ex) { XTrace.WriteException(ex); }
+ catch (Exception ex)
+ {
+ XTrace.WriteLine(ex.Message);
+ }
var connStr = _ConnStr.Replace("Database=sys;", "Database=Membership_Test;");
DAL.AddConnStr("MySql_Select", connStr, null, "MySql");
diff --git a/XUnitTest.XCode/XUnitTest.XCode.csproj b/XUnitTest.XCode/XUnitTest.XCode.csproj
index 36cb26d6c..6666c18bb 100644
--- a/XUnitTest.XCode/XUnitTest.XCode.csproj
+++ b/XUnitTest.XCode/XUnitTest.XCode.csproj
@@ -84,13 +84,13 @@
-
-
-
+
+
+
-
+
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive