- 创建新项目
打开 https://cn.abp.io/Templates
,任意选择一个项目类型,然后创建项目,我这里创建了一个Web Api
解压项目,还原Nuget,项目目录如下:
首先我们来查看下整个项目关于数据库方面的引用:
从图中我们可以看到IdentityServerHost
和MKM.BookStore.Host
这两个站点有引用,IdentityServerHost
是用户中心API,和MKM.BookStore.Host
是我们的业务中心API,这里我们以MKM.BookStore.Host
的处理为例来讲解下如何把原有的SqlServer替换为Mysql。
1、在以MKM.BookStore.Host
添加Volo.Abp.EntityFrameworkCore.MySQL
的引用
2、修改数据库Default
的连接字符串为Mysql的数据库连接字符串
1 //SqlServer 2 //"Default" "Server=localhost;Database=BookStoreHost;Trusted_Connection=True;MultipleActiveResultSets=true", 3 4 //Mysql 5 "Default": "SERVER=192.168.2.15; PORT=3306; DATABASE=BookStoreHost; USER=root; PASSWORD=123456;", 6 7 // 缓存数据库 8 "SqlServerCache": "Server=localhost;Database=BookStoreCache;Trusted_Connection=True;MultipleActiveResultSets=true"
3、DemoAppModule.cs
3.1 、替换引用
添加Volo.Abp.EntityFrameworkCore.MySQL
的引用
注释Volo.Abp.EntityFrameworkCore.SqlServer
的引用
3.2、替换Module
1 typeof(AbpEntityFrameworkCoreSqlServerModule)替换为typeof(AbpEntityFrameworkCoreMySQLModule) 2 3 [DependsOn( 4 typeof(AbpAutofacModule), 5 typeof(BookStoreApplicationModule), 6 typeof(BookStoreEntityFrameworkCoreModule), 7 typeof(BookStoreHttpApiModule), 8 typeof(AbpPermissionManagementEntityFrameworkCoreModule), 9 typeof(AbpSettingManagementEntityFrameworkCoreModule), 10 typeof(AbpAuditLoggingEntityFrameworkCoreModule), 11 //typeof(AbpEntityFrameworkCoreSqlServerModule) 12 typeof(AbpEntityFrameworkCoreMySQLModule) 13 )]
3.3、 UseSqlServer
改为UseMySQL
1 Configure(options => 2 { 3 //options.UseSqlServer(); 4 options.UseMySQL(); 5 });
4、DemoAppDbContextFactory.cs
public DemoAppDbContext CreateDbContext(string[] args) { var configuration = BuildConfiguration(); //var builder = new DbContextOptionsBuilder() // .UseSqlServer(configuration.GetConnectionString("Default")); var builder = new DbContextOptionsBuilder() .UseMySQL(configuration.GetConnectionString("Default")); return new DemoAppDbContext(builder.Options); }
5、迁移&&生成
5.1、删除默认迁移文件
删除Migrations
目录以及文件,因为默认的是SqlServer的,我们这里是需要生产Mysql的。
5.2、 生成新的迁移文件
MKM.BookStore.Host
设置为启动项目,打开程序包管理控制台并且默认项目选择为MKM.BookStore.Host
执行迁移命令
PM> add-migration mysql_init
5.3、更新数据库
PM> update-database -verbose
5.4、关闭 TodosController 的 Authorize,运行 MKM.BookStore.Host
[RemoteService]
[Area("BookStore")]
[Route("api/BookStore/todos")]
//[Authorize]
public class TodosController : AbpController
{
private readonly ITodoAppService _todoAppService;
public TodosController(ITodoAppService todoAppService)
{
_todoAppService = todoAppService;
}
[HttpGet]
[Route("")]
public Task> GetListAsync()
{
return _todoAppService.GetListAsync();
}
}
}
github 地址:https://github.com/Jesn/MKM.BookStore.git