我正在尝试在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
答案 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并使用单声道。