Entity framework System.InvalidProgrameException System.Data.Objects.ObjectContext:.ctor(字符串,字符串):方法正文为空

Entity framework System.InvalidProgrameException System.Data.Objects.ObjectContext:.ctor(字符串,字符串):方法正文为空,entity-framework,mono,raspberry-pi,Entity Framework,Mono,Raspberry Pi,我在树莓皮上使用mono(3.0.3)。除了实体框架之外,其他一切都正常工作。我可以毫无问题地登录到我的站点,但当我进入一个存在entity framework的区域时,XSP出现以下错误: Application Exception System.InvalidProgramException Invalid IL code in System.Data.Objects.ObjectContext:.ctor (string,string): method body is empty. De

我在树莓皮上使用mono(3.0.3)。除了实体框架之外,其他一切都正常工作。我可以毫无问题地登录到我的站点,但当我进入一个存在entity framework的区域时,XSP出现以下错误:

Application Exception
System.InvalidProgramException
Invalid IL code in System.Data.Objects.ObjectContext:.ctor (string,string): method body is empty.

Description: HTTP 500.Error processing request.
Details: Non-web exception. Exception origin (name of application or object): AdwenModel.
Exception stack trace:
  at AdwenModel.AdwenEntities1..ctor (System.String connectionString) [0x00000] in <filename unknown>:0 
  at AdwenWeb.App_Code.AdwenConnection.getDataContextAdwen () [0x00000] in <filename unknown>:0 
  at AdwenWeb.Management.overview.createObjectTable () [0x00000] in <filename unknown>:0 
  at AdwenWeb.Management.overview.Page_Load (System.Object sender, System.EventArgs e) [0x00000] in <filename unknown>:0 
  at System.Web.UI.Control.OnLoad (System.EventArgs e) [0x00029] in /opt/mono-3.0/mono/mcs/class/System.Web/System.Web.UI/Control.cs:1211 
  at System.Web.UI.Control.LoadRecursive () [0x00031] in /opt/mono-3.0/mono/mcs/class/System.Web/System.Web.UI/Control.cs:1641 
  at System.Web.UI.Page.ProcessLoad () [0x0004a] in /opt/mono-3.0/mono/mcs/class/System.Web/System.Web.UI/Page.cs:1490 
  at System.Web.UI.Page.ProcessPostData () [0x0004d] in /opt/mono-3.0/mono/mcs/class/System.Web/System.Web.UI/Page.cs:1475 
  at System.Web.UI.Page.InternalProcessRequest () [0x001bf] in /opt/mono-3.0/mono/mcs/class/System.Web/System.Web.UI/Page.cs:1442 
  at System.Web.UI.Page.ProcessRequest (System.Web.HttpContext context) [0x00062] in /opt/mono-3.0/mono/mcs/class/System.Web/System.Web.UI/Page.cs:1269 
Version Information: 3.0.3 (master/c1b505c Thu Dec 6 09:17:47 UTC 2012); ASP.NET Version: 4.0.30319.17020
应用程序异常
System.InvalidProgrameException
System.Data.Objects.ObjectContext:.ctor(字符串,字符串)中的IL代码无效:方法体为空。
描述:HTTP 500。处理请求时出错。
详细信息:非web异常。异常源(应用程序或对象的名称):AdwenModel。
异常堆栈跟踪:
在0中的AdwenModel.AdwenEntities1..ctor(System.String connectionString)[0x00000]处
在0中的AdwenWeb.App_Code.AdwenConnection.getDataContextAdwen()[0x00000]处
位于:0中的AdwenWeb.Management.overview.createObjectTable()[0x00000]
在AdwenWeb.Management.overview.Page_加载(System.Object sender,System.EventArgs e)[0x00000]中:0
在/opt/mono-3.0/mono/mcs/class/System.Web/System.Web.UI/Control.OnLoad(System.EventArgs e)[0x00029]中
在/opt/mono-3.0/mono/mcs/class/System.Web/System.Web.UI/Control.cs:1641中的System.Web.UI.Control.LoadRecursive()[0x00031]处
在/opt/mono-3.0/mono/mcs/class/System.Web/System.Web.UI/Page.cs:1490中的System.Web.UI.Page.ProcessLoad()[0x0004a]处
在/opt/mono-3.0/mono/mcs/class/System.Web/System.Web.UI/Page.cs:1475中的System.Web.UI.Page.ProcessPostData()[0x0004d]
位于/opt/mono-3.0/mono/mcs/class/System.Web/System.Web.UI/Page.cs:1442中的System.Web.UI.Page.InternalProcessRequest()[0x001bf]
在/opt/mono-3.0/mono/mcs/class/System.Web/System.Web.UI/Page.ProcessRequest(System.Web.HttpContext上下文)[0x00062]中
版本信息:3.0.3(master/c1b505c-Thu-Dec 6 09:17:47 UTC 2012);ASP.NET版本:4.0.30319.17020

我真的不知道还有什么问题。

我不太了解Mono中的实体框架支持,但我知道的是,Mono中已经包含了EF6,System.Data.Objects不再是EF6中ObjectContext的命名空间。导致故障的原因应该是System.Data.Entity.Core.Objects.ObjectContext


希望这有帮助。

是的,你说得对!Mono团队只说:从Mono 2.11.3开始,微软的开源EntityFramework是Mono发行版的一部分。链接:他们没有指定任何其他内容!我必须进入万维网的地下城才能找到答案。在本页中,可能会有更详细的说明。您是否发现错误引用System.Data.Objects命名空间的代码?我对例外情况的唯一猜测是,现有的开源代码表单MVC和EF6已经被逐字包含在Mono中,并且MVC代码库依赖于EF5(它不是开源的,也不包含在Mono中)这一事实还没有得到考虑。如果引用System.Data.Objects命名空间的代码是项目的一部分,您可以简单地编辑名称空间以反映EF6中的新位置,例如,DbContext和Code First API仍然与以前在System.Data.Entity下的名称空间相同,但最初包含在.NET中的大多数其他API都已转移到System.Data.Entity.Core下。今天我尝试了几件事,比如升级到Visual Studio 2012和.NET framework 4.5。但这并不顺利。我的整个解决方案与VS2012不兼容。在VS2010中,我无法将.NET4.5作为目标。我认为以4.5为目标将是一个更好的解决方案,用于正确的组装。但我现在非常困惑。实际上EF6包括.NET4.0和.NET4.5的版本。两者之间的主要区别在于.NET 4.5版本包含了新的异步API和System.ComponentModel.DataAnnotations.dll.NET 4.0中缺少的DataAnnotations定义。我不知道Mono是否需要使用Visual Studio 2012,但我知道EF6不需要。