Entity Framework è pronto per la produzione? [chiuso]


10

Sto cercando Entity Framework per un nuovo progetto che sto per intraprendere e, nell'ambito della mia ricerca, sto chiedendo ad alcuni professionisti del settore se è stabile e pronto per l'implementazione del "mondo reale".

In corsa è:

  • EF
  • NHibernate
  • DevExpress XPO

Ho già una grande esperienza con XPO, ma non ne sono particolarmente soddisfatto.

Risposte:


8

Sì, ma con alcuni avvertimenti:

  • È pienamente supportato da Microsoft e ha una community in crescita - ma essendo più recente del suo concorrente più vicino, nHibernate, non ha ancora una comunità abbastanza matura.

  • Oltre ad avere una comunità meno matura, ci saranno momenti in cui una funzione è disponibile con EF4 ma a malapena documentata; o EF4 genererà eccezioni che Google non può aiutarti.

  • È completo quando usato come intende Microsoft, ma nella mia esperienza può essere abbastanza difficile adattarlo a un sistema esistente. Idealmente, lo utilizzerai in uno scenario greenfield con uno stack Microsoft al 100%. È certamente abbastanza flessibile da mescolarsi con altri sistemi, ma ciò aumenta notevolmente la difficoltà.

Tuttavia, per ribadire il punto principale, è completo e abbastanza stabile per l'uso in produzione.


Una cosa chiave da sottolineare, che sembra ovvio ma spesso viene trascurata fino a quando non provoca dolore, è che un ORM lavora per mappare dal paradigma relazionale al paradigma OO. Se uno di questi livelli non segue le regole del rispettivo paradigma, ti sentirai molto ferito.

Questo può andare in entrambi i modi: se sei esperto del paradigma relazionale / basato su set di SQL e OOP, l'ORM permetterà ai due di mescolarsi come il burro. Se il tuo database sembra voler essere OO e il tuo codice OO sembra essere basato su record, allora YMMV.


+1: grazie per le informazioni. Fortunatamente, il progetto è greenfield quasi interamente nello stack .NET (sto ancora discutendo tra mysql e sql server) e modellerò prima il dominio (e spero di generare la struttura della tabella)
Steven Evers,

@SnOrfus: FWIW Di recente ho iniziato a utilizzare EF su MySQL e mi diverto davvero.
Eric King,

5

Abbiamo utilizzato EF in diverse applicazioni di produzione. Abbiamo anche NHibernate in diverse app di produzione. Il commento di STW secondo cui EF funziona meglio "se usato come intende Microsoft" è certamente vero. È anche vero per NHibernate che funziona meglio se usato seguendo gli schemi previsti dal team NHibernate. Non ho alcuna conoscenza o esperienza con XPO.

Non mi pento di aver messo in produzione NHibernate.
Non mi pento di aver messo Entity Framework in produzione.

Uno dei fattori trainanti per utilizzare EF è stata l'integrazione con LINQ. So che NHibernate ha lavorato molto anche con LINQ, ma non ha ancora avuto il tempo di indagare su questo.


Lavorare con entrambi è un ottimo modo per imparare come lavorare con entrambi. È un po 'come imparare sia VB.NET che C #: fai domande quando vedi differenze e porre quelle domande migliora notevolmente la tua comprensione alla fine.
STW,

3

Stiamo usando EF4.1 con l'approccio Code First per il nostro progetto Web e, come affermato in precedenza, mantenendo l'utilizzo come previsto da Microsoft, ti terrà fuori molti problemi.

Si può notare tuttavia che il sistema non è ancora veramente maturo e lo dico perché:

  1. Il comportamento cambia ancora molto (rispetto da CTP5 a 4.1)
  2. Il generatore LINQ to Entities è in grado di gestire solo tipi di base (Int, String, the lot)
  3. Alcune cose non hanno funzionato in modo completamente intuitivo quando si tenta di unire insiemi di dati esistenti
    1. Non consente di creare definizioni di tabelle solo per determinati dbset
    2. La mappatura di campi come gli orari dei dati richiede l'utilizzo di Google.
  4. Vedi altri problemi noti

2

In realtà non ho usato l'intero stack, ma lo usiamo frammentariamente nel nostro prodotto e sembra abbastanza maturo, anche se abbiamo dovuto adattare alcuni pezzi per le nostre esigenze.


0

Io la penso così. Sto usando EF4 code-first (CTP) per sviluppare un'applicazione Web multi-tenant.


+1 - Sì, ho fatto un po 'di coaching in una squadra che lo ha usato intensamente in un progetto di impresa molto grande, e ha funzionato abbastanza bene. Quello era con la prima versione, non l'ultima. Quindi sono sicuro che è sicuro al 100% usare l'ultima versione.

Non so come poter essere sicuro al 100% di qualsiasi software che non sia stato effettivamente eseguito in un ambiente di produzione.
Jeremy,

-1

Penso / lo spero ... Sto iniziando un progetto con EF 4 e il nuovo approccio Model-First ...

Per quello che ho visto EF 4 è molto robusto e completo di funzionalità rispetto alla prima versione ... Direi che provaci, so che ci vado :)


-1

Sì, tuttavia, è necessario allocare risorse per l'aggiornamento e il test di nuovo dell'applicazione quando vengono rilasciati gli aggiornamenti (come con qualsiasi altro framework).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.