打开https://cn.abp.io/Templates,任意选择一个项目类型,然后创建项目,我这里创建了一个Web Api

    Volo.Abp.EntityFrameworkCore.MySQL - 图1

    解压项目,还原Nuget,项目目录如下:

    Volo.Abp.EntityFrameworkCore.MySQL - 图2

    首先我们来查看下整个项目关于数据库方面的引用:

    Volo.Abp.EntityFrameworkCore.MySQL - 图3

    从图中我们可以看到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. //Mysql
    4. "Default": "SERVER=192.168.2.15; PORT=3306; DATABASE=BookStoreHost; USER=root; PASSWORD=123456;",
    5. // 缓存数据库
    6. "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 - 图4

    Volo.Abp.EntityFrameworkCore.MySQL - 图5

    5.3、更新数据库

    PM> update-database -verbose

    Volo.Abp.EntityFrameworkCore.MySQL - 图6

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