“发生了类型加载异常。”使用带有Mono的MySql连接器的DbContext

时间:2012-11-20 22:16:37

标签: asp.net-mvc mono entity-framework-4.1 ef-code-first mysql-connector

我正在尝试在ASP.NET MVC 3项目中将MySQL数据库与实体框架版本4.1.0.0和Mono 2.11.4一起使用。

在我的本地Windows系统上一切都很好但是当我将它发布到我的Ubuntu 12.04 LTS系统时,我遇到了很多错误。

首先我得到:

  

无法从程序集'EntityFramework,Version = 4.1.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'加载类型'System.Data.Entity.Infrastructure.DbUpdateException'。

当我按 F5 时,每次页面刷新时都会出现不同的错误:

  •   

    无法从程序集'EntityFramework,Version = 4.1.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'加载类型'System.Data.Entity.Infrastructure.DbUpdateConcurrencyException'。

  •   

    无法从程序集'EntityFramework,Version = 4.1.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'加载类型'System.Data.Entity.Infrastructure.DbCompiledModel'。

  •   

    无法从程序集'EntityFramework,Version = 4.1.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'加载类型'System.Data.Entity.Infrastructure.ReplacementDbQueryWrapper`1 [TElement]'。

  •   

    无法从程序集'MySql.VisualStudio,Version = 6.6.4.0,Culture = neutral,PublicKeyToken = c5687fc88969c44d'加载类型'MySql.Data.VisualStudio.Editors.SqlEditor'。

  •   

    无法从程序集'MySql.VisualStudio,Version = 6.6.4.0,Culture = neutral,PublicKeyToken = c5687fc88969c44d'加载类型'MySql.Data.VisualStudio.WebConfig.WebConfigDlg'。

  •   

    发生了类型加载异常。

当我尝试将数据库与此代码一起使用时发生了最后一个错误:

using (var db = new DefaultContext())
{
    db.Persons.Add(new Person() { Name = "hallo", Address = "bllaaa" });
    db.SaveChanges();

    var persons = db.Persons.ToList();
    return View(persons);
}

有没有人有类似的问题并解决了?我不知道该怎么做。

P.S。:我使用Code First Migration

2 个答案:

答案 0 :(得分:0)

根据我的理解,Mono正在捆绑Entity Framework的开源版本,该版本基本上尚未发布v6。

http://weblogs.asp.net/scottgu/archive/2012/07/19/entity-framework-and-open-source.aspx

因此,似乎您无法定位EF v4.x,因为代码可能已经发生了重大变化。虽然,如果您发现看似缺失的类型仍然存在,您可以尝试使用程序集重定向解决问题(只搜索bindingRedirect)。

答案 1 :(得分:0)

我知道为什么会这样。 我从源代码安装了mono后,通过apt-get安装了mono-fastcgi-server4。所以我安装了2个单声道版本,旧的版本是活跃的。 (2.10.8)

实体框架对我来说似乎完全没用,因为只有新的EF6可以与数据库一起使用,但是没有任何提供商支持EF6并使用单声道。