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。
我正在尝试使用以下代码将我的网站 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。