Volo.Abp.EntityFrameworkCore.MySQL 使用

jesn發表於2019-01-14

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

Volo.Abp.EntityFrameworkCore.MySQL 使用

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

Volo.Abp.EntityFrameworkCore.MySQL 使用

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

Volo.Abp.EntityFrameworkCore.MySQL 使用

從圖中我們可以看到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的資料庫連線字串

    //SqlServer
    //"Default" "Server=localhost;Database=BookStoreHost;Trusted_Connection=True;MultipleActiveResultSets=true",
    
    //Mysql
    "Default": "SERVER=192.168.2.15; PORT=3306; DATABASE=BookStoreHost; USER=root; PASSWORD=123456;",
    
    // 快取資料庫
    "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

typeof(AbpEntityFrameworkCoreSqlServerModule)替換為typeof(AbpEntityFrameworkCoreMySQLModule)

    [DependsOn(
        typeof(AbpAutofacModule),
        typeof(BookStoreApplicationModule),
        typeof(BookStoreEntityFrameworkCoreModule),
        typeof(BookStoreHttpApiModule),
        typeof(AbpPermissionManagementEntityFrameworkCoreModule),
        typeof(AbpSettingManagementEntityFrameworkCoreModule),
        typeof(AbpAuditLoggingEntityFrameworkCoreModule),
        //typeof(AbpEntityFrameworkCoreSqlServerModule)
         typeof(AbpEntityFrameworkCoreMySQLModule)
        )]
複製程式碼

3.3、 UseSqlServer改為UseMySQL

 Configure<AbpDbContextOptions>(options =>
            {
                //options.UseSqlServer();
                options.UseMySQL();
            });
複製程式碼

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

Volo.Abp.EntityFrameworkCore.MySQL 使用

Volo.Abp.EntityFrameworkCore.MySQL 使用

5.3、更新資料庫

PM> update-database -verbose

Volo.Abp.EntityFrameworkCore.MySQL 使用

github地址: github.com/Jesn/MKM.Bo…

相關文章