Volo.Abp.EntityFrameworkCore.MySQL 使用

jesn發表於2019-01-14
  • 建立新專案

開啟 https://cn.abp.io/Templates ,任意選擇一個專案型別,然後建立專案,我這裡建立了一個Web Api

 

 

解壓專案,還原Nuget,專案目錄如下:

 

 

首先我們來檢視下整個專案關於資料庫方面的引用:

 

 

從圖中我們可以看到IdentityServerHostMKM.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();
        }
    }
}

  

 

 

github 地址:https://github.com/Jesn/MKM.BookStore.git

相關文章