项目

切换至 EF Core MySQL 提供程序

ABP CLI入门指南 页面已经提供了创建新解决方案时选择 MySQL 的选项。具体使用方法请参阅 该文档。本文档旨在为创建解决方案后希望手动切换到 MySQL 的用户提供指导。

本文档说明如何为**应用启动模板**(默认预配置 SQL Server 提供程序)切换到 MySQL 数据库提供程序。

替换 Volo.Abp.EntityFrameworkCore.SqlServer 包

解决方案中的 .EntityFrameworkCore 项目依赖于 Volo.Abp.EntityFrameworkCore.SqlServer NuGet 包。请移除该包,并添加相同版本的 Volo.Abp.EntityFrameworkCore.MySQL 包。

替换模块依赖项

.EntityFrameworkCore 项目中找到 YourProjectNameEntityFrameworkCoreModule 类,从 DependsOn 特性中移除 typeof(AbpEntityFrameworkCoreSqlServerModule),并添加 typeof(AbpEntityFrameworkCoreMySQLModule)(同时将 using Volo.Abp.EntityFrameworkCore.SqlServer; 替换为 using Volo.Abp.EntityFrameworkCore.MySQL;)。

使用 UseMySQL()

在解决方案中找到所有 UseSqlServer() 调用。检查以下文件:

  • .EntityFrameworkCore 项目中的 YourProjectNameEntityFrameworkCoreModule.cs。将 UseSqlServer() 替换为 UseMySQL()
  • .EntityFrameworkCore 项目中的 YourProjectNameDbContextFactory.cs。将 UseSqlServer() 替换为 UseMySQL()

根据解决方案的结构,可能还有其他代码文件需要修改。

使用 Pomelo 提供程序

或者,您可以使用 Pomelo.EntityFrameworkCore.MySql 提供程序。在 .EntityFrameworkCore 项目中,将 Volo.Abp.EntityFrameworkCore.MySQL 包替换为 Volo.Abp.EntityFrameworkCore.MySQL.Pomelo 包。

要完成向 Pomelo 提供程序的切换,您需要更新模块依赖项。为此,在 .EntityFrameworkCore 项目中找到 YourProjectNameEntityFrameworkCoreModule 类,并在 DependsOn 特性中将 typeof(AbpEntityFrameworkCoreMySQLModule) 替换为 typeof(AbpEntityFrameworkCoreMySQLPomeloModule)

此外,如果您是从 ABP 的 MySQL 提供程序以外的其他提供程序切换而来,您需要在相关位置调用 UseMySQL 方法,具体如下一节所述。

使用 UseMySQL()

在解决方案中找到所有 UseSqlServer() 调用。检查以下文件:

  • .EntityFrameworkCore 项目中的 YourProjectNameEntityFrameworkCoreModule.cs。将 UseSqlServer() 替换为 UseMySql()
  • .EntityFrameworkCore 项目中的 YourProjectNameDbContextFactory.cs。将 UseSqlServer() 替换为 UseMySql()

您还需要指定 ServerVersion。详情请参阅 <https://github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql/wiki/Configuration-Options#server-version。>

UseMySql(configuration.GetConnectionString("Default"), ServerVersion.AutoDetect(configuration.GetConnectionString("Default")));UseMySql(configuration.GetConnectionString("Default"), new MySqlServerVersion(new Version(8, 4, 6)));

根据解决方案的结构,可能还有其他代码文件需要修改。

更改连接字符串

MySQL 连接字符串与 SQL Server 连接字符串不同。因此,请检查解决方案中的所有 appsettings.json 文件,并替换其中的连接字符串。有关 MySQL 连接字符串选项的详细信息,请参阅 connectionstrings.com

通常,您需要更改 .DbMigrator.Web 项目中的 appsettings.json,但这取决于您的解决方案结构。

重新生成迁移

启动模板使用 Entity Framework Core 的 Code First Migrations。EF Core 迁移依赖于所选的 DBMS 提供程序。因此,更改 DBMS 提供程序会导致迁移失败。

  • 删除 .EntityFrameworkCore 项目下的 Migrations 文件夹,并重新构建解决方案。
  • 在包管理器控制台中运行 Add-Migration "Initial"(在解决方案资源管理器中选择 .DbMigrator(或 .Web)项目作为启动项目,并在包管理器控制台中选择 .EntityFrameworkCore 项目作为默认项目)。

这将创建一个包含所有数据库对象(表)配置的数据库迁移。

运行 .DbMigrator 项目以创建数据库并填充初始数据。

运行应用程序

一切准备就绪。只需运行应用程序并开始愉快的编码吧。

在本文档中