2009-08-31 4 views
6

Uso il Mono 2.4 nel servizio di hosting Web di Ubiquity.Utilizzo di Microsoft Data Entity Framework con Microsoft MVC su Mono 2.4

Ho creato una semplice applicazione tutoriale MVC, collegata a here e verificato che funzionasse con tutti gli strumenti Microsoft.

Successivamente, l'applicazione è stata aggiornata per puntare a un database di server MySQL in esecuzione sul mio host Ubiquity. L'applicazione funziona alla grande su un computer basato su Microsoft.

Ora, sto cercando di distribuire l'applicazione sul server mono su Ubiquity.

Ho impostato System.Web.MVC in modo che CopyLocal = true.

Ho distribuito l'applicazione sul server mono.


ottengo questo errore:

Descrizione: Errore durante l'analisi di una risorsa necessaria per soddisfare questa richiesta. Controlla il tuo file sorgente e modificalo per correggere questo errore.

Messaggio di errore del parser: Assembly System.Data.Entity, versione = 3.5.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089 non trovato Informazioni sulla versione: Versione mono: 2.0.50727.1433; ASP.NET Version: 2.0.50727.1433


sto indovinando il problema potrebbe essere ...

A) Entity Framework non è supportato in mono. Ho bisogno di utilizzare qualcosa di diverso da Microsoft Data Entity Framework.

B) Il token di chiave pubblica per la versione mono di System.Data.Entity non è "b77a5c561934e089".

C) C'è qualcos'altro in corso.


Ho provato a impostare CopyLocal = true per la DLL System.Entity.Data. Pertanto, la versione Microsoft della DLL è stata distribuita sul mio server mono. Ho dei dubbi sul fatto che questo è legale. In ogni caso, che ha prodotto solo il seguente errore:

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.


Domanda

Qualcuno può confermare che è possibile utilizzare il Microsoft Entity Framework su Mono? Sto probabilmente andando a migrare lontano dalla Microsoft Entity Framework, per questo commento nel tutorial Microsoft MVC linkato sopra ..

"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."

Tuttavia, per motivi di coerenza, vorrei utilizzare il Framework Microsoft Entity su mono se è possibile.

+0

per informazioni http://www.mono-project.com/EntityFramework – Sharique

risposta

3

È necessario impostare CopyLocal = true anche per l'assembly System.Data.Entity. Hai notato che hai copiato System.Web.MVC local, ma non hai mai menzionato che hai copiato System.Data.Entity localmente. Potrebbe anche essere necessario copiare in locale qualsiasi assembly che System.Data.Entity dipenda dal fatto che non fanno parte di Mono.

+0

Sì, l'ho provato. Il compilatore MONO ha fallito con questo messaggio criptico. > Ottenuto un SIGSEGV durante l'esecuzione di codice nativo. Questo di solito indica un errore fatale nel runtime mono o in una delle librerie native utilizzate dall'applicazione. Suppongo che ciò sia dovuto al fatto che la versione Microsoft di System.Data.Entity non è stata compilata per fare riferimento alle librerie principali di Mono. – Allen

+0

Sì, sembra che EF non supporti Mono. Immagino che non sia sorprendente ... EF è una struttura massiccia e complessa. È possibile che ci siano ganci di sistema e simili che lo rendono non portatile. Consiglierei di esaminare i mapper OR alternativi, poiché MVC non ha alcuna dipendenza diretta da alcun framework di mappatura OR. Potresti anche cercare LINQ in SQL, se le tue esigenze sono semplici. Questo è un altro Microsoft ORM, ma è molto più semplice di EF. – jrista

+0

http://www.mono-project.com/EntityFramework il lavoro è stato analizzato –

8

Posso confermare che EntityFramework, Microsoft Grafico Controlli, e Microsoft Sync Framework non funzionano su mono su Linux, nonostante le dichiarazioni diverse da Microsoft e/o MS-dipendenti.

Questo perché Sync Framwork utilizza pinvoke con un componente di interoperabilità COM, Microsoft Chart Controls ha problemi DirectorySeparator e lo spazio dei nomi EntityFramwork non è ancora stato portato su mono.
Quindi, quando Microsoft dice "funziona con mono", significa "con mono su Windows".

Si stima che la porta EntityFramwork impiegherà almeno 1 anno, fino a quando non raggiungerà la fase alpha/beta, cioè se qualcuno decidesse di farlo.

Ma non ci sono piani ufficiali per il porting EntityFramework.

EntityFramwork potrebbe lavoro/i sulla versione Windows di mono, purché si imposti localcopy su true.

Si consiglia di utilizzare invece Nhibere.

Aggiornamento:

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.

due verso il basso, uno per andare.
Immagino che questo significhi:

GRANDE GRAZIE A MICROSOFT, CHE È TERRIFIC! ! !

+0

Mi correggo: Microsoft Chart Controls funziona su Linux, ma solo se si utilizza BinaryStreaming. –

+2

Ora che EF è stato open source, immagino che potrebbe rendere questo port un ordine di grandezza più facile? – Martin

+0

@ Martin: È già stato fatto (oddio, quello era il lavoro di 1 mese di 1 uomo)! –