1

我正在尝试在 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,版本=6.6.4.0,文化=中性,PublicKeyToken=c5687fc88969c44d”加载类型“MySql.Data.VisualStudio.Editors.SqlEditor”。

  • 无法从程序集“MySql.VisualStudio,版本=6.6.4.0,文化=中性,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);
}

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

PS:我使用代码优先迁移

4

2 回答 2

0

据我了解,Mono 正在捆绑实体框架的开源版本,它本质上是尚未发布的 v6。

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

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

于 2012-11-20T22:45:42.820 回答
0

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

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

于 2012-11-22T01:04:23.030 回答