我在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。
答案 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。