Abp vNext 切换MySql数据库

Abp vNext是Abp的下一代版本,目前还在经一步完善,代码已经所有重写了,好的东西保留了下来,去除了不少笨重的东西,从官宣来看,Abp vNext主要是为了之后微服务架构而诞生的。web

从源码来看,Abp vNext已经支持了多种数据库,Sql Server,MySql,PostgreSql等。默认状况下,你建立的项目使用的是Sql Server版本,若是须要切换到MySql的话,仅须要:数据库

第一步,在你的EntityFrameworkCore(Abp的EF框架模块,用来建立DbContext,数据迁移用的)中,从NuGet中安装Volo.Abp.EntifyFrameworkCore.MySql小程序

第二步,打开TGDbContextFactory.cs架构

第三部,修改代码:框架

public TGDbContext CreateDbContext(string[] args)
{
    var configuration = BuildConfiguration();

    var builder = new DbContextOptionsBuilder<TGDbContext>()
        
        .UseSqlServer(configuration.GetConnectionString("Default"));

    return new TGDbContext(builder.Options);
}

改为微服务

public TGDbContext CreateDbContext(string[] args)
{
    var configuration = BuildConfiguration();

    var builder = new DbContextOptionsBuilder<TGDbContext>()
        
        .UseMySQL(configuration.GetConnectionString("Default"));

    return new TGDbContext(builder.Options);
}

本来觉得这样就能ok的,update-database的时候一堆错误,去issue上看了下,都有这个问题,有人建议用Pomele的MySql驱动,还提了PR,当我今天(3月9号)去看的时候PR已经经过,但Nuget包还未更新。ui

自给自足丰衣足食,本身来吧,其实很是简单code

先去掉刚引入的Volo.Abp.EntityFrameworkCore.MySql,而后引入Pomelo.EntityFrameworkCore.MySql,随后上述代码改成:开发

public TGDbContext CreateDbContext(string[] args)
{
    var configuration = BuildConfiguration();

    var builder = new DbContextOptionsBuilder<TGDbContext>()
        
        .UseMySql(configuration.GetConnectionString("Default"));

    return new TGDbContext(builder.Options);
}

ok,简单改造完成,咱们再来update-database,咱们的建立顺利的完成了。get

你觉得结束了吗,幼稚!默认启动的时候他仍是会选择Sql Server,咱们看下代码,在Web项目下的xxWebModule.cs,xx是你的项目名,这个是咱们web的Module文件,咱们知道Abp是一个Module加载的框架。在这个项目中一样引入Pomelo.EntityFrameworkCore.MySql,随后修改ConfigureDatabaseServices方法,

private void ConfigureDatabaseServices()
{
    Configure<AbpDbContextOptions>(options =>
    {
        options.Configure(context =>
        {
            if (context.ExistingConnection != null)
            {
                context.DbContextOptions.UseMySql(context.ExistingConnection);
            }
            else
            {
                context.DbContextOptions.UseMySql(context.ConnectionString);
            }
        });
    });
}

改完以上的代码,你就能够顺利启动Abp vNext for MySql了。

改的不是很优雅,毕竟下一个版本应该会解决这个问题。以前用Abp Core作了小程序并放到了生产环境,启动慢了点,可是运行什么都比较稳定,开发也比较便捷,看了Abp vNext后,感受一种小清新,相信在不久以后,我会使用它放到生产环境。其实一些老鸟的话,本身都有本身的框架,说实在的,Abp的好处就在于可以让你们有一种统一的快速的开发方式。

PS:陪儿子写字写了3个小时,写1个字发呆5分钟以上,能理解这种痛苦吗?

相关文章
相关标签/搜索