【问题标题】:Works on console project but not on ASP.NET project EF Core with MySql Connector适用于控制台项目,但不适用于带有 MySql 连接器的 ASP.NET 项目 EF Core
【发布时间】:2017-10-22 07:00:10
【问题描述】:

我有一个奇怪的问题。我正在尝试使用 Entity Framework Core 访问 MySql 数据库。

它适用于 .NET 控制台。但是当相同的代码在网络应用程序上运行时,它会说。

fail: Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware[0]
      An unhandled exception has occurred while executing the request
System.TypeLoadException: Method 'Clone' in type 'MySQL.Data.EntityFrameworkCore.Infraestructure.Internal.MySQLOptionsExtension' from assembly 'MySql.Data.EntityFrameworkCore, Version=8.0.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d' does not have an implementation.

   at Microsoft.EntityFrameworkCore.MySQLDbContextOptionsExtensions.UseMySQL[TContext]
   at ConsoleApplication.EmployeesContextFactory.Create(String connectionString) in BooksController.cs:line 65

这是我的代码

    var optionsBuilder = new DbContextOptionsBuilder<EmployeesContext>();
    optionsBuilder.UseMySQL(connectionString);

    var context = new EmployeesContext(optionsBuilder.Options);
    context.Database.EnsureCreated();

它给了我 UseMySql() 方法的异常。相同的代码在控制台中运行良好。

还有connectionString, .NET Core version 和我能想到的很多限制都是一样的。

编辑

看到差异 ASP.NET 项目有以下 Nugets

控制台应用程序具有以下内容,

两个项目都将其目标框架显示为 2.0

解决这个问题的正确方法是什么?

【问题讨论】:

  • 我认为这与版本差异有关。
  • @JohnKennedy 是的。是否可以在 2.0 中使用 .Net core 1.1 nugets?如果可能,它将解决问题。
  • 不,这是不可能的。您应该为您正在使用的软件包获取 v2.0。

标签: mysql entity-framework asp.net-core-mvc .net-core entity-framework-core


【解决方案1】:

由于当前 MySQL 连接器仅支持 .NET Core 1,因此您可能无法将其与 v2 一起使用。
你可以在https://github.com/jasonsturges/mysql-dotnet-core试试这个包

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-25
    • 1970-01-01
    • 2014-12-14
    • 1970-01-01
    • 2019-03-16
    • 1970-01-01
    相关资源
    最近更新 更多