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