切换至 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 项目以创建数据库并填充初始数据。
运行应用程序
一切准备就绪。只需运行应用程序并开始愉快的编码吧。
抠丁客


