歡迎光臨
每天分享高質量文章

Abp vNext 切換MySql資料庫

Abp vNext是Abp的下一代版本,目前還在經一步完善,代碼已經全部重寫了,好的東西保留了下來,去除了很多笨重的東西,從官宣來看,Abp vNext主要是為了以後微服務架構而誕生的。

從原始碼來看,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()
        
        .UseSqlServer(configuration.GetConnectionString("Default"));

    return new TGDbContext(builder.Options);
}

改成

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

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

    return new TGDbContext(builder.Options);
}

原本以為這樣就能ok的,update-database的時候一堆錯誤,去issue上看了下,都有這個問題,有人建議用Pomele的MySql驅動,還提了PR,當我今天(3月9號)去看的時候PR已經通過,但Nuget包還未更新。

自給自足豐衣足食,自己來吧,其實非常簡單

先去掉剛引入的Volo.Abp.EntityFrameworkCore.MySql,然後引入Pomelo.EntityFrameworkCore.MySql,隨後上述代碼改為:

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

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

    return new TGDbContext(builder.Options);
}

ok,簡單改造完成,我們再來update-database,我們的創建順利的完成了。

你以為結束了嗎,幼稚!預設啟動的時候他還是會選擇Sql Server,我們看下代碼,在Web專案下的xxWebModule.cs,xx是你的專案名,這個是我們web的Module檔案,我們知道Abp是一個Module加載的框架。在這個專案中同樣引入Pomelo.EntityFrameworkCore.MySql,隨後修改ConfigureDatabaseServices方法,

private void ConfigureDatabaseServices()
{
    Configure(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的好處就在於能夠讓大家有一種統一的快速的開發方式。

相關文章:

原文地址:https://www.cnblogs.com/inday/p/abp-vNext-for-Mysql.html

赞(0)

分享創造快樂