2009-08-31 17 views
6

Estoy usando Mono 2.4 en el servicio de alojamiento web Ubiquity.Usando Microsoft Data Entity Framework con Microsoft MVC en Mono 2.4

Creé una aplicación MVC tutioal simple, vinculé here, y verifiqué que funcionó con todas las herramientas de Microsoft.

A continuación, la aplicación se actualizó para apuntar a una base de datos del servidor MySQL que se ejecuta en mi host Ubiquity. La aplicación funciona muy bien en una máquina basada en Microsoft.

Ahora, estoy tratando de implementar la aplicación en el servidor mono en Ubiquity.

Configuré System.Web.MVC por lo que CopyLocal = true.

Implementé la aplicación en el servidor mono.


me sale este error:

Descripción: Error al analizar un recurso necesario para atender esta solicitud. Revise su archivo fuente y modifíquelo para corregir este error.

analizador de mensajes de error: Asamblea System.Data.Entity, Version = 3.5.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089 que no se encuentra Información de la versión: Versión Mono: 2.0.50727.1433; ASP.NET Versión: 2.0.50727.1433


estoy adivinando el problema podría ser ...

A) El marco de la entidad no se admite en mono. Necesito usar algo que no sea Microsoft Data Entity Framework.

B) El token de clave pública para la versión mono de System.Data.Entity no es "b77a5c561934e089".

C) Hay algo más que está pasando.


He intentado configurar CopyLocal = true para el System.Entity.Data dll. Por lo tanto, la versión de Microsoft del DLL se implementó en mi servidor mono. Tengo dudas de que esto sea legal. En cualquier caso, que sólo produce el siguiente error:

Got a SIGSEGV while executing native code. This usually indicates a fatal error in the mono runtime or one of the native libraries used by your application.


Pregunta

Puede alguien confirmar que es posible utilizar el Framework de Microsoft Entidad en Mono? Probablemente voy a emigrar lejos de la Entidad Framework de Microsoft, por este comentario en el tutorial Microsoft MVC vinculado anteriormente ..

"The ASP.NET MVC framework is not tied to the Microsoft Entity Framework. You can create >your database model classes by taking advantage of a variety of Object Relational Mapping >(OR/M) tools including LINQ to SQL, Subsonic, and NHibernate."

Sin embargo, por razones de coherencia, me gustaría utilizar el Framework de Microsoft Entidad de mono si eso es posible.

+0

para su información http://www.mono-project.com/EntityFramework – Sharique

Respuesta

3

Debe establecer CopyLocal = true para el ensamblado System.Data.Entity también. Notó que copió localmente System.Web.MVC, pero nunca mencionó que copió System.Data.Entity localmente. Es posible que también necesite copiar local alguno de los ensamblados de los que depende System.Data.Entity que no sean parte de Mono.

+0

Sí, lo intenté. El compilador MONO falló con este mensaje críptico. > Obtuve un SIGSEGV mientras ejecutaba el código nativo. Esto generalmente indica un error fatal en el tiempo de ejecución mono o en una de las bibliotecas nativas utilizadas por su aplicación. Supongo que esto se debe a que la versión de Microsoft de System.Data.Entity no está compilada para hacer referencia a las bibliotecas centrales de Mono. – Allen

+0

Sí, parece que EF no es compatible con Mono. Supongo que no es sorprendente ... EF es un marco masivo y complejo. Es posible que haya ganchos del sistema y elementos similares que lo hagan no portátil. Yo recomendaría buscar en OR alternativos o mapeadores, ya que MVC no tiene una dependencia directa en ninguno de los marcos de mapeo OR. Incluso puede buscar en LINQ to SQL, si sus necesidades son simples. Ese es otro Microsoft ORM, pero es mucho más simple que EF. – jrista

+0

http://www.mono-project.com/EntityFramework el trabajo se ha analizado –

8

puedo confirmar que ADO.NET Entity Framework, Microsoft Chart Controls, y Microsoft Sync Framework no funcionan en mono en Linux, a pesar de las diferentes demandas de Microsoft y/o MS-empleados.

Esto se debe a que Sync Framwork utiliza pinvoke con un componente de interoperabilidad COM, Microsoft Chart Controls tiene problemas con DirectorySeparator, y el espacio de nombres de EntityFramwork aún no está portado a mono.
Tenga en cuenta que cuando Microsoft dice "funciona con mono", significa "con mono en Windows".

Se estima que el puerto EntityFramwork tardará al menos 1 año, hasta que alcance la etapa alfa/beta, es decir, si alguien decidiera hacerlo.

Pero no hay planes oficiales para portar EntityFramework.

EntityFramwork podría trabajo/s en la versión de Windows de mono, siempre que configure localcopy en verdadero.

Te aconsejo que uses nhibernate en su lugar.

Actualización:

As of Mono 2.11.3, Microsoft has open sourced EntityFramework.
Hence, it is now a part of Mono's distribution.
This version comes with 349 commits, with around 514 file changes.
It includes 15553 insertions and 3717 deletions.

Dos abajo, uno a ir.
Supongo que esto significa:

GRANDES GRACIAS A MICROSOFT, ESO ES FABULOSO! ! !

+0

Me corrijo: Microsoft Chart Controls funciona en Linux, pero solo si usas BinaryStreaming. –

+2

Ahora que EF ha sido de fuente abierta, ¿supongo que podría hacer que este puerto sea de un orden de magnitud más fácil? – Martin

+0

@Martin: Ya está hecho (¡Dios mío, ese fue el trabajo de 1 hombre de 1 mes)! –