From 3ff71c052e40f9bdce966cd426be34bff9d4445f Mon Sep 17 00:00:00 2001 From: maliming Date: Sat, 26 Jul 2025 12:11:45 +0800 Subject: [PATCH] Support both `MySql.EntityFrameworkCore` & `Pomelo.EntityFrameworkCore.MySql`. --- Directory.Packages.props | 1 + .../Volo.Abp.EntityFrameworkCore.MySQL.csproj | 1 + ...textConfigurationContextMySQLExtensions.cs | 34 +++++++++++++- .../AbpDbContextOptionsMySQLExtensions.cs | 45 +++++++++++++++++-- .../MySqlConnectionStringChecker.cs | 2 +- 5 files changed, 76 insertions(+), 7 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 5d9885ddbd..275db7ca5c 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -137,6 +137,7 @@ + diff --git a/framework/src/Volo.Abp.EntityFrameworkCore.MySQL/Volo.Abp.EntityFrameworkCore.MySQL.csproj b/framework/src/Volo.Abp.EntityFrameworkCore.MySQL/Volo.Abp.EntityFrameworkCore.MySQL.csproj index 3b039a3ef0..59b5b3c138 100644 --- a/framework/src/Volo.Abp.EntityFrameworkCore.MySQL/Volo.Abp.EntityFrameworkCore.MySQL.csproj +++ b/framework/src/Volo.Abp.EntityFrameworkCore.MySQL/Volo.Abp.EntityFrameworkCore.MySQL.csproj @@ -22,6 +22,7 @@ + diff --git a/framework/src/Volo.Abp.EntityFrameworkCore.MySQL/Volo/Abp/EntityFrameworkCore/AbpDbContextConfigurationContextMySQLExtensions.cs b/framework/src/Volo.Abp.EntityFrameworkCore.MySQL/Volo/Abp/EntityFrameworkCore/AbpDbContextConfigurationContextMySQLExtensions.cs index 07381983ca..11d14ff9e3 100644 --- a/framework/src/Volo.Abp.EntityFrameworkCore.MySQL/Volo/Abp/EntityFrameworkCore/AbpDbContextConfigurationContextMySQLExtensions.cs +++ b/framework/src/Volo.Abp.EntityFrameworkCore.MySQL/Volo/Abp/EntityFrameworkCore/AbpDbContextConfigurationContextMySQLExtensions.cs @@ -1,16 +1,29 @@ using JetBrains.Annotations; using Microsoft.EntityFrameworkCore; using System; -using Microsoft.EntityFrameworkCore.Infrastructure; using Volo.Abp.EntityFrameworkCore.DependencyInjection; namespace Volo.Abp.EntityFrameworkCore; public static class AbpDbContextConfigurationContextMySQLExtensions { + /// + /// This extension method is configuring the use Pomelo.EntityFrameworkCore.MySql as the database provider. + /// + [Obsolete("Use UsePomeloMySQL instead.")] public static DbContextOptionsBuilder UseMySQL( [NotNull] this AbpDbContextConfigurationContext context, - Action? mySQLOptionsAction = null) + Action? mySQLOptionsAction = null) + { + return context.UsePomeloMySQL(mySQLOptionsAction); + } + + /// + /// This extension method is configuring the use Pomelo.EntityFrameworkCore.MySql as the database provider. + /// + public static DbContextOptionsBuilder UsePomeloMySQL( + [NotNull] this AbpDbContextConfigurationContext context, + Action? mySQLOptionsAction = null) { if (context.ExistingConnection != null) { @@ -31,4 +44,21 @@ public static class AbpDbContextConfigurationContextMySQLExtensions }); } } + + /// + /// This extension method is configuring the use MySql.EntityFrameworkCore as the database provider. + /// + public static DbContextOptionsBuilder UseMySQL( + [NotNull] this AbpDbContextConfigurationContext context, + Action? mySQLOptionsAction = null) + { + if (context.ExistingConnection != null) + { + return context.DbContextOptions.UseMySQL(context.ExistingConnection, mySQLOptionsAction); + } + else + { + return context.DbContextOptions.UseMySQL(context.ConnectionString, mySQLOptionsAction); + } + } } diff --git a/framework/src/Volo.Abp.EntityFrameworkCore.MySQL/Volo/Abp/EntityFrameworkCore/AbpDbContextOptionsMySQLExtensions.cs b/framework/src/Volo.Abp.EntityFrameworkCore.MySQL/Volo/Abp/EntityFrameworkCore/AbpDbContextOptionsMySQLExtensions.cs index baf8c53a14..3f41ae931f 100644 --- a/framework/src/Volo.Abp.EntityFrameworkCore.MySQL/Volo/Abp/EntityFrameworkCore/AbpDbContextOptionsMySQLExtensions.cs +++ b/framework/src/Volo.Abp.EntityFrameworkCore.MySQL/Volo/Abp/EntityFrameworkCore/AbpDbContextOptionsMySQLExtensions.cs @@ -1,14 +1,51 @@ using JetBrains.Annotations; using System; -using Microsoft.EntityFrameworkCore.Infrastructure; namespace Volo.Abp.EntityFrameworkCore; public static class AbpDbContextOptionsMySQLExtensions { + [Obsolete("Use UsePomeloMySQL instead.")] public static void UseMySQL( - [NotNull] this AbpDbContextOptions options, - Action? mySQLOptionsAction = null) + [NotNull] this AbpDbContextOptions options, + Action? mySQLOptionsAction = null) + { + options.UsePomeloMySQL(mySQLOptionsAction); + } + + [Obsolete("Use UsePomeloMySQL instead.")] + public static void UseMySQL( + [NotNull] this AbpDbContextOptions options, + Action? mySQLOptionsAction = null) + where TDbContext : AbpDbContext + { + options.UsePomeloMySQL(mySQLOptionsAction); + } + + public static void UsePomeloMySQL( + [NotNull] this AbpDbContextOptions options, + Action? mySQLOptionsAction = null) + { + options.Configure(context => + { + context.UsePomeloMySQL(mySQLOptionsAction); + }); + } + + public static void UsePomeloMySQL( + [NotNull] this AbpDbContextOptions options, + Action? mySQLOptionsAction = null) + where TDbContext : AbpDbContext + { + options.Configure(context => + { + context.UsePomeloMySQL(mySQLOptionsAction); + }); + } + + public static void UseMySQL( + [NotNull] this AbpDbContextOptions options, + Action? mySQLOptionsAction = null) { options.Configure(context => { @@ -18,7 +55,7 @@ public static class AbpDbContextOptionsMySQLExtensions public static void UseMySQL( [NotNull] this AbpDbContextOptions options, - Action? mySQLOptionsAction = null) + Action? mySQLOptionsAction = null) where TDbContext : AbpDbContext { options.Configure(context => diff --git a/framework/src/Volo.Abp.EntityFrameworkCore.MySQL/Volo/Abp/EntityFrameworkCore/ConnectionStrings/MySqlConnectionStringChecker.cs b/framework/src/Volo.Abp.EntityFrameworkCore.MySQL/Volo/Abp/EntityFrameworkCore/ConnectionStrings/MySqlConnectionStringChecker.cs index 88dc7912f3..a06c84171b 100644 --- a/framework/src/Volo.Abp.EntityFrameworkCore.MySQL/Volo/Abp/EntityFrameworkCore/ConnectionStrings/MySqlConnectionStringChecker.cs +++ b/framework/src/Volo.Abp.EntityFrameworkCore.MySQL/Volo/Abp/EntityFrameworkCore/ConnectionStrings/MySqlConnectionStringChecker.cs @@ -1,6 +1,6 @@ using System; using System.Threading.Tasks; -using MySqlConnector; +using MySql.Data.MySqlClient; using Volo.Abp.Data; using Volo.Abp.DependencyInjection;