bug由來mysql
最近開始學習NetCore,想經過實戰使用NetCore作一個集成數據庫存儲Redis緩存的WebApi項目,因爲MSSQL的龐大致積,最終決定使用輕量級關係型數據庫MySql。sql
因此最終方案是NetCore+EF+MySql(Redis緩存)完成這個項目數據庫
因爲以前接觸mysql甚少,也是從網上搜集資料學習緩存
引用了Nuget學習
MySql.Data.EntityFrameworkCore網站
Pomelo.EntityFrameworkCore.MySqlspa
因爲這兩個都是mysql,在概念混淆的狀況下都引用了,這就出現了在數據庫鏈接的時候出現了這個bugcode
貼上代碼blog
public void ConfigureServices(IServiceCollection services) { var mysqlCon = Configuration.GetSection("ConnectionStrings:MySqlCon").Value; services.AddDbContext<Models.MainDBContext>(l => l.UseMySQL(mysqlCon)); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); }
由於同時用用了Mysql和Pomelo,在這個與數據庫交互的地方出現了問題get
追蹤進去UseMySQL發現裏面用的是MySql.Data.EntityFrameworkCore程序集
因爲使用的NetCore版本是2.1,查詢不少資料最終在國外網站得知MySql.Data.EntityFrameworkCore對NetCore2.1的支持並不完善,因此若是須要用到ef的話,推薦使用下面的
同時代碼也修改成(標紅部分)
public void ConfigureServices(IServiceCollection services) { var mysqlCon = Configuration.GetSection("ConnectionStrings:MySqlCon").Value; services.AddDbContext<Models.MainDBContext>(l => l.UseMySql(mysqlCon)); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); }
經過追蹤
若是在數據遷移Migrations的時候也出現這個錯誤提示,那麼問題是同樣的,一樣修改成小寫的,引用Pomelo.EntityFrameworkCore.MySql就能夠了