MySql EntityFrameworkCore System.TypeLoadException

MySql EntityFrameworkCore System.TypeLoadException

我正在尝试使用以下代码将我的网站 API 连接到 MySql 数据库:

public class Startup
{       
    public void ConfigureServices(IServiceCollection services)
    {
        string conn_string = "server=server;database=database;uid=uid;pwd=pwd;";
        MySqlConnection conn = new MySqlConnection(conn_string);
        services.AddDbContext<TaskContext>(options =>
        {
            options.UseMySQL(conn);
        });
        services.AddMvc();
    }      
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        app.UseMvc();
    }
}

但我总是收到 System.TypeLoadException 的描述:

System.TypeLoadException : 'Method 'Clone' in type 'MySQL.Data.EntityFrameworkCore.Infraestructure.Internal.MySQLOptionsExtension' from assembly 'MySql.Data.EntityFrameworkCore, Version=8.0.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d' does not have an implementation.'

我正在使用 Microsoft Visual Studio Community 2017 Preview (2),我的项目是 .NET Core 2.0。我还使用 MySql.Data.EntityFrameworkCore.dll 和 Microsoft.AspNetCore.All (2.0.0-preview2-final)。我为 MySql 更改了很多次库,但都没有成功。

知道为什么总是这样吗?可能是什么原因?

好吧,事实证明您不能将 MySql.Data.EntityFrameworkCore 用于 .Net Core 2.0(目前)。我必须回到 .Net Core 1.3 才能让它工作......我们也许可以在不久的将来使用它!

使用 Pomelo.EntityFrameworkCore.MySql 2.0.0。 .NET Core 2.0 对我来说效果很好

添加"Pomelo.EntityFrameworkCore.MySql" 包。 在 Stertup.cs & appsettings.json & DbContext 中:

services.AddDbContext<mvccoreContext>(options =>
         options.UseMySql(Configuration.GetConnectionString("DefaultConnection")
        ));


     {
      "ConnectionStrings": {
        "DefaultConnection": "Server=localhost;Database=mvccore;User=root;Password=;"
      },
      "Logging": {
        "LogLevel": {
          "Default": "Warning"
        }
      },
      "AllowedHosts": "*"
    }


protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        if (!optionsBuilder.IsConfigured)
        {
            optionsBuilder.UseMySql("");
        }
    }

MySql.Data.EntityFrameworkCore 支持(并且仅兼容)EF Core 2.1。使用不匹配的 EF Core 和 DB 提供程序库将导致类似于您报告的错误。

如果您需要与 EF Core 3.0 兼容的 MySQL EF Core 提供程序,您现在唯一的选择是 https://www.nuget.org/packages/Pomelo.EntityFrameworkCore.MySql (see the compatibility table at https://github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql#compatibility 的 3.0.0-rc1 版本)! ).

否则,如果您想坚持使用 MySql.Data.EntityFrameworkCore,则需要回滚到 EF Core 2.1。