MySql EntityFrameworkCore System.TypeLoadException

时间:2017-08-01 13:48:13

标签: mysql entity-framework-core asp.net-core-webapi asp.net-core-2.0

我正在尝试使用以下代码将我的Web 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:'方法'克隆'的类型   'MySQL.Data.EntityFrameworkCore.Infraestructure.Internal.MySQLOptionsExtension'   来自程序集'MySql.Data.EntityFrameworkCore,Version = 8.0.8.0,   Culture = neutral,PublicKeyToken = c5687fc88969c44d'没有   实施'。

我正在使用Microsoft Visual Studio社区2017预览版(2),我的专业版是在.NET Core 2.0中。我还使用MySql.Data.EntityFrameworkCore.dll和Microsoft.AspNetCore.All(2.0.0-preview2-final)。我已经为MySql改变了很多次librairy,但没有成功。

知道为什么总会发生这种情况吗?可能是什么原因?

4 个答案:

答案 0 :(得分:7)

嗯,事实证明你不能将MySql.Data.EntityFrameworkCore用于.Net Core 2.0(现在)。我不得不回到.Net Core 1.3来使它工作......我们或许可以在近乎未来的时候使用它!

答案 1 :(得分:3)

使用Pomelo.EntityFrameworkCore.MySql 2.0.0。 使用.NET Core 2.0可以正常使用

答案 2 :(得分:0)

添加“ Pomelo.EntityFrameworkCore.MySql”包。 在Stertup.cs和appsettings.json和DbContext中:

from tkinter import Tk, LEFT, BOTH, StringVar
from tkinter.ttk import Entry, Frame
import functools


class Example(Frame):
    def __init__(self, parent):
        Frame.__init__(self, parent)
        self.parent = parent
        self.initUI()

    def initUI(self):
        self.parent.title("Entry")
        self.pack(fill=BOTH, expand=1)
        self.contents = []
        self.ent = []
        for i in range(0,5):
            self.contents.append(StringVar())

        # give the StringVar a default value
        for i in range(0,5):
            self.entry = Entry(self)
            self.entry.grid(row=0,column=i)
            self.entry["textvariable"] = self.contents[i]
            self.entry.bind('<KeyRelease>', self.on_changed)
            self.ent.append(self.entry)

    def on_changed(self, event):
        print('contents: {}'.format(self.contents.get()))
        return True
def main():
    root = Tk()
    ex = Example(root)
    root.geometry("800x400")
    root.mainloop()


if __name__ == '__main__':
    main()

答案 3 :(得分:0)

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

如果您需要与EF Core 3.0兼容的MySQL EF Core提供程序,则当前唯一的选择是https://www.nuget.org/packages/Pomelo.EntityFrameworkCore.MySql的3.0.0-rc1版本(请参见https://github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql#compatibility的兼容性表)! )。

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