netcore下支持MySqlConnector驱动;下载站启用/adonet子目录
This commit is contained in:
parent
2f1e163c6c
commit
15009b9b56
|
@ -142,8 +142,6 @@ public class Program
|
||||||
//};
|
//};
|
||||||
//p.Insert();
|
//p.Insert();
|
||||||
|
|
||||||
throw new Exception("error");
|
|
||||||
|
|
||||||
var list = Role.FindAll();
|
var list = Role.FindAll();
|
||||||
XTrace.WriteLine("Roles: {0}", list.Count);
|
XTrace.WriteLine("Roles: {0}", list.Count);
|
||||||
|
|
||||||
|
|
|
@ -37,11 +37,11 @@
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="IBM.Data.DB2.Core" Version="3.1.0.600" />
|
<PackageReference Include="IBM.Data.DB2.Core" Version="3.1.0.600" />
|
||||||
<PackageReference Include="MySql.Data" Version="9.1.0" />
|
<PackageReference Include="MySqlConnector" Version="2.4.0" />
|
||||||
<PackageReference Include="NewLife.Redis" Version="6.2.2025.503" />
|
<PackageReference Include="NewLife.Redis" Version="6.2.2025.601" />
|
||||||
<PackageReference Include="NewLife.Remoting" Version="3.3.2025.501" />
|
<PackageReference Include="NewLife.Remoting" Version="3.3.2025.601" />
|
||||||
<PackageReference Include="NewLife.Stardust" Version="3.3.2025.506" />
|
<PackageReference Include="NewLife.Stardust" Version="3.4.2025.601" />
|
||||||
<PackageReference Include="Oracle.ManagedDataAccess.Core" Version="23.7.0" />
|
<PackageReference Include="Oracle.ManagedDataAccess.Core" Version="23.8.0" />
|
||||||
<PackageReference Include="SapHana.DotNetCore.Data.Provider" Version="2.11.14" />
|
<PackageReference Include="SapHana.DotNetCore.Data.Provider" Version="2.11.14" />
|
||||||
<PackageReference Include="System.Data.SqlClient" Version="4.9.0" />
|
<PackageReference Include="System.Data.SqlClient" Version="4.9.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="Current">
|
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="Current">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFrameworks>net452;net462;netstandard2.0;netstandard2.1</TargetFrameworks>
|
<TargetFrameworks>net462;netstandard2.0;netstandard2.1</TargetFrameworks>
|
||||||
<AssemblyTitle>数据中间件MySql包</AssemblyTitle>
|
<AssemblyTitle>数据中间件MySql包</AssemblyTitle>
|
||||||
<Description>引入MySql数据库驱动包</Description>
|
<Description>引入MySql数据库驱动包</Description>
|
||||||
<Company>新生命开发团队</Company>
|
<Company>新生命开发团队</Company>
|
||||||
|
@ -35,13 +35,10 @@
|
||||||
<PackagePath>\</PackagePath>
|
<PackagePath>\</PackagePath>
|
||||||
</None>
|
</None>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup Condition="'$(TargetFramework)'!='net452'">
|
|
||||||
<PackageReference Include="MySql.Data" Version="9.1.0" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup Condition="'$(TargetFramework)'=='net452'">
|
|
||||||
<PackageReference Include="MySql.Data" Version="8.0.32.1" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\XCode\XCode.csproj" />
|
<ProjectReference Include="..\XCode\XCode.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="MySqlConnector" Version="2.4.0" />
|
||||||
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
|
@ -36,7 +36,7 @@
|
||||||
</None>
|
</None>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Oracle.ManagedDataAccess.Core" Version="23.7.0" />
|
<PackageReference Include="Oracle.ManagedDataAccess.Core" Version="23.8.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\XCode\XCode.csproj" />
|
<ProjectReference Include="..\XCode\XCode.csproj" />
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
</None>
|
</None>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Npgsql" Version="8.0.6" />
|
<PackageReference Include="Npgsql" Version="8.0.7" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\XCode\XCode.csproj" />
|
<ProjectReference Include="..\XCode\XCode.csproj" />
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="Current">
|
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="Current">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFrameworks>net451;net461;netstandard2.0;netstandard2.1</TargetFrameworks>
|
<TargetFrameworks>net462;netstandard2.0;netstandard2.1</TargetFrameworks>
|
||||||
<AssemblyTitle>数据中间件SqlServer包</AssemblyTitle>
|
<AssemblyTitle>数据中间件SqlServer包</AssemblyTitle>
|
||||||
<Description>引入SqlServer数据库驱动包</Description>
|
<Description>引入SqlServer数据库驱动包</Description>
|
||||||
<Company>新生命开发团队</Company>
|
<Company>新生命开发团队</Company>
|
||||||
|
@ -36,7 +36,7 @@
|
||||||
</None>
|
</None>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="System.Data.SqlClient" Version="4.8.6" />
|
<PackageReference Include="System.Data.SqlClient" Version="4.9.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\XCode\XCode.csproj" />
|
<ProjectReference Include="..\XCode\XCode.csproj" />
|
||||||
|
|
|
@ -3,7 +3,6 @@ using System.Data;
|
||||||
using System.Data.Common;
|
using System.Data.Common;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using NewLife;
|
|
||||||
using NewLife.Collections;
|
using NewLife.Collections;
|
||||||
using NewLife.Log;
|
using NewLife.Log;
|
||||||
using NewLife.Reflection;
|
using NewLife.Reflection;
|
||||||
|
@ -462,11 +461,22 @@ abstract class DbBase : DisposeBase, IDatabase
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static DbProviderFactory? GetProviderFactory(String? name, String assemblyFile, String className, Boolean strict = false, Boolean ignoreError = false)
|
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<String>();
|
||||||
|
foreach (var item in urls)
|
||||||
|
{
|
||||||
|
if (!item.EndsWithIgnoreCase("/adonet", "/adonet/"))
|
||||||
|
urls2.Add(item.TrimEnd('/') + "/adonet");
|
||||||
|
}
|
||||||
|
urls2.AddRange(urls);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (name.IsNullOrEmpty()) name = Path.GetFileNameWithoutExtension(assemblyFile);
|
if (name.IsNullOrEmpty()) name = Path.GetFileNameWithoutExtension(assemblyFile);
|
||||||
var links = GetLinkNames(name, strict);
|
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);
|
var factory = GetProviderFactory(type);
|
||||||
if (factory != null) return factory;
|
if (factory != null) return factory;
|
||||||
|
|
|
@ -23,12 +23,21 @@ internal class MySql : RemoteDb
|
||||||
var factory = GetProviderFactory(type);
|
var factory = GetProviderFactory(type);
|
||||||
if (factory != null) return factory;
|
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);
|
type = PluginHelper.LoadPlugin("MySql.Data.MySqlClient.MySqlClientFactory", null, "MySql.Data.dll", null);
|
||||||
factory = GetProviderFactory(type);
|
factory = GetProviderFactory(type);
|
||||||
if (factory != null) return factory;
|
if (factory != null) return factory;
|
||||||
|
|
||||||
// MewLife.MySql 在开发过程中,数据驱动下载站点没有它的包,暂时不支持下载
|
// 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");
|
GetProviderFactory(null, "MySql.Data.dll", "MySql.Data.MySqlClient.MySqlClientFactory");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -695,6 +704,13 @@ internal class MySqlMetaData : RemoteDbMetaData
|
||||||
|
|
||||||
protected override Boolean DatabaseExist(String databaseName)
|
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]);
|
var dt = GetSchema(_.Databases, [databaseName]);
|
||||||
return dt != null && dt.Rows != null && dt.Rows.Count > 0;
|
return dt != null && dt.Rows != null && dt.Rows.Count > 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,7 +46,7 @@
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="NewLife.Core" Version="11.5.2025.601" />
|
<PackageReference Include="NewLife.Core" Version="11.5.2025.623-beta0617" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Using Include="NewLife" />
|
<Using Include="NewLife" />
|
||||||
|
|
|
@ -83,9 +83,9 @@ public class MySqlTests
|
||||||
using var conn = db.OpenConnection();
|
using var conn = db.OpenConnection();
|
||||||
connstr = conn.ConnectionString;
|
connstr = conn.ConnectionString;
|
||||||
//Assert.EndsWith("characterset=utf8mb4;sslmode=Disabled;allowpublickeyretrieval=True", connstr);
|
//Assert.EndsWith("characterset=utf8mb4;sslmode=Disabled;allowpublickeyretrieval=True", connstr);
|
||||||
Assert.Contains("characterset=utf8mb4", connstr);
|
Assert.Contains("=utf8mb4", connstr);
|
||||||
Assert.Contains("sslmode=", connstr);
|
//Assert.Contains("sslmode=", connstr);
|
||||||
Assert.Contains("allowpublickeyretrieval=True", connstr);
|
//Assert.Contains("allowpublickeyretrieval=True", connstr);
|
||||||
|
|
||||||
var ver = db.ServerVersion;
|
var ver = db.ServerVersion;
|
||||||
Assert.NotEmpty(ver);
|
Assert.NotEmpty(ver);
|
||||||
|
@ -119,7 +119,10 @@ public class MySqlTests
|
||||||
{
|
{
|
||||||
dal.Execute("drop database membership_test");
|
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;");
|
var connStr = _ConnStr.Replace("Database=sys;", "Database=Membership_Test;");
|
||||||
DAL.AddConnStr("MySql_Select", connStr, null, "MySql");
|
DAL.AddConnStr("MySql_Select", connStr, null, "MySql");
|
||||||
|
|
|
@ -84,13 +84,13 @@
|
||||||
</None>
|
</None>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.13.0" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
|
||||||
<PackageReference Include="NewLife.Core" Version="11.5.2025.601" />
|
<PackageReference Include="NewLife.Core" Version="11.5.2025.623-beta0617" />
|
||||||
<PackageReference Include="NewLife.IP" Version="2.3.2025.202" />
|
<PackageReference Include="NewLife.IP" Version="2.3.2025.601" />
|
||||||
<PackageReference Include="NewLife.UnitTest" Version="1.0.2025.101" />
|
<PackageReference Include="NewLife.UnitTest" Version="1.0.2025.101" />
|
||||||
<PackageReference Include="System.Diagnostics.PerformanceCounter" Version="9.0.0" />
|
<PackageReference Include="System.Diagnostics.PerformanceCounter" Version="9.0.6" />
|
||||||
<PackageReference Include="xunit" Version="2.9.3" />
|
<PackageReference Include="xunit" Version="2.9.3" />
|
||||||
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.0">
|
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.1">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
|
|
Loading…
Reference in New Issue