[bug系列]Method not found: 'Void Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommandBuild

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就能夠了

相關文章
相關標籤/搜索