在Mono 2.4上使用Microsoft Data Entity Framework和Microsoft MVC

时间:2009-08-31 20:36:07

标签: asp.net-mvc entity-framework mono

我在Ubiquity网站托管服务上使用Mono 2.4。

我创建了一个简单的MVC tutioal applciation,链接here,并验证它使用了所有Microsoft工具。

接下来,应用程序更新为指向在我的Ubiquity主机上运行的MySQL服务器数据库。该应用程序在基于Microsoft的计算机上运行良好。

现在,我正在尝试将应用程序部署到Ubiquity上的单声道服务器。

我设置了System.Web.MVC,因此它将CopyLocal = true。

我将应用程序部署到单声道服务器。


我收到此错误:

描述:解析为此请求提供服务所需的资源时出错。检查您的源文件并对其进行修改以修复此错误。

分析器错误消息:Assembly System.Data.Entity,Version = 3.5.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089 not found 版本信息:单声道版本:2.0.50727.1433; ASP.NET版本:2.0.50727.1433


我猜这个问题可能是......

A)单声道不支持实体框架。我需要使用Microsoft Data Entity Framework之外的其他东西。

B)单声道版本System.Data.Entity的公钥令牌不是“b77a5c561934e089”。

C)还有其他事情发生。


我尝试为System.Entity.Data dll设置CopyLocal = true。因此,部署到我的单声道服务器的Microsoft版本的DLL。我怀疑这是合法的。无论如何,这只会产生以下错误:

  

执行本机代码时获得了SIGSEGV。这通常表明   单声道运行时或其中一个本机库中的致命错误   您的应用程序使用。


问题

有人可以确认可以在Mono上使用Microsoft Entity Framework吗?根据上面链接的Microsoft MVC教程中的这个评论,我可能会从Microsoft Entity Framework迁移出去。

  

“ASP.NET MVC框架与Microsoft Entity Framework无关。您可以通过利用各种对象关系映射>(OR / M)工具(包括LINQ to SQL)创建>您的数据库模型类,Subsonic和NHibernate。“

但是,为了保持一致性,我想在可能的情况下在单声道上使用Microsoft Entity Framework。

3 个答案:

答案 0 :(得分:8)

我可以确认 EntityFramework Microsoft图表控件和Microsoft Sync Framework不能在Linux上使用mono,尽管微软和/或MS员工声称不同

这是因为Sync Framwork使用pinvoke和COM互操作组件,Microsoft Chart Controls有DirectorySeparator问题,而EntityFramwork名称空间没有移植到单声道。
请注意,当微软称“使用单声道”时,它们的意思是“在Windows上使用单声道 ”。

据估计,EntityFramwork端口至少需要1年,直到达到alpha / beta阶段,也就是说,如果有人决定这样做。

但是没有官方计划移植EntityFramework。

只要将localcopy设置为true,

EntityFramwork 可能在Windows版本的mono上工作。

我建议你改用nhibernate。

<强>更新

  

从Mono 2.11.3开始,Microsoft开源了EntityFramework。
  因此,它现在是Mono发行版的一部分。
  此版本附带349次提交,大约514次文件更改。
  它包括15553次插入   和3717缺失。

两个下来,一个去 我想这意味着:

非常感谢MICROSOFT,这是太棒了! ! !

答案 1 :(得分:3)

您也应该为System.Data.Entity程序集设置CopyLocal = true。您注意到您复制了System.Web.MVC local,但从未提及您在本地复制了System.Data.Entity。您可能还需要复制System.Data.Entity所依赖的任何不属于Mono的本地程序集。

答案 2 :(得分:2)

目前看起来目前还没有支持EDF的Mono,但someone is working on it