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

All*_*len 5 asp.net-mvc mono entity-framework

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

我创建了一个简单的MVC tutioal applciation,链接在这里,并验证它使用了所有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,如果可能的话.

Ste*_*ger 8

尽管Microsoft和/或MS员工提出了不同的声明,但我可以确认EntityFramework,Microsoft Chart Controls和Microsoft Sync Framework不适用于Linux上的mono.

这是因为Sync Framwork使用带有COM互操作组件的pinvoke,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,这太划桨了!!!

  • 既然EF已经开源了,我想这可能会使这个端口更容易一个数量级? (2认同)

jri*_*sta 3

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