- 創建新項目
打開 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<AbpDbContextOptions>(options => 2 { 3 //options.UseSqlServer(); 4 options.UseMySQL(); 5 });
4、DemoAppDbContextFactory.cs
public DemoAppDbContext CreateDbContext(string[] args) { var configuration = BuildConfiguration(); //var builder = new DbContextOptionsBuilder<DemoAppDbContext>() // .UseSqlServer(configuration.GetConnectionString("Default")); var builder = new DbContextOptionsBuilder<DemoAppDbContext>() .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<PagedResultDto<TodoDto>> GetListAsync()
{
return _todoAppService.GetListAsync();
}
}
}

