基于启动模板创建的 ABP 项目,默认数据库是 SQLServer,如何切换到 MySQL 呢?下面我来总结一下。
替换包 Volo.Abp.EntityFrameworkCore.SqlServer
将 .EntityFrameworkCore
引用的 Volo.Abp.EntityFrameworkCore.SqlServer
替换成 Volo.Abp.EntityFrameworkCore.MySQL
替换模块依赖 (Module Dependency
)
编辑.EntityFrameworkCore
项目里的 xxxEntityFrameworkCoreModule.cs
类
- 将
using Volo.Abp.EntityFrameworkCore.SqlServer;
替换为using Volo.Abp.EntityFrameworkCore.MySQL;
- 将
DependenOn
里的typeof(AbpEntityFrameworkCoreMySQLModule)
替换为typeof(AbpEntityFrameworkCoreMySQLModule)
UseMySQL()
查找解决方案中所有的UseSqlServer()
,并替换成UseMySql()
.
修改数据库连接字符串
找到具有appsetings.json
并需要连接数据库的项目,将数据库连接字符串修改为符合 MySQL 格式。
可以参考 connectionstrings.com 。
通常需要修改
.DbMigrator
和.Web
项目
修改 Migration DbContext
IdentityServer module 有自己的数据库映射配置,默认使用 SQLServer 作为数据提供者,需要显式指定成 MySQL。
在项目.EntityFrameworkCore.DbMigrations
里找到 xxxMigrationsDbContext
, 修改如下:
builder.ConfigureIdentityServer(options =>
{
options.DatabaseProvider = EfCoreDatabaseProvider.MySql;
});
重新生成迁移
- 删除
.EntityFrameworkCore.DbMigrations
项目下的Migrations
文件夹,并重新生成解决方案 - 在命令行下切换到
.Web
项目目录,执行命令类似如下:
dotnet ef migrations add 'InitialCreate'
--project ../LearnAbp.BookStore.EntityFrameworkCore.DbMigrations
- 执行数据库迁移
dotnet ef database update
--project ../LearnAbp.BookStore.EntityFrameworkCore.DbMigrations
- 运行
.DbMigrator
程序初始种子数据
启动程序
到此数据提供程序就完全切换成 MySQL
,可以启动.Web
项目查看效果。