2010-07-25 16 views
9

Vorrei conoscere i pro e i contro dell'utilizzo dell'approccio Code-First EF4. Possiamo duplicare tutte le funzionalità offerte dalle classi EF4 come caricamento pigro, caricamento di entità correlate, ecc.?Entity Framework 4 Code-First pro and cons

Grazie

risposta

7

Pro

  1. classi di entità leggeri o POCO based.
  2. Più controllo sulle classi di entità poiché si codificano da soli anziché dipendere da EF per generarle. Ciò significa che non è necessario definire classi parziali per fare annotazioni di dati.
  3. Opzione per non dover specificare la mappatura ovunque. La convenzione assume la configurazione.
  4. DbContext segue il modello di repository.
  5. Caricamento lento, entità correlata caricamento tutto a posto per te. Ad esempio, un modello Post può dichiarare il modello Autore nel POCO e il Codice EF prima mapperà automaticamente questa relazione. Ancora una volta l'uso della convenzione ci rende così produttivi.
  6. Funziona alla grande per le applicazioni greenfield.
  7. ASP.NET La generazione di viste MVC funziona alla grande.
  8. ModelBinder funziona normalmente.

Contro

  1. Nessun supporto API per la personalizzazione della convenzione la mappatura di database come in Fluent NHibernate.
  2. Bit difficile da mappare a database esistenti. (Questo potrebbe cambiare nella versione di rilascio).

Per il codice di esempio e la mappatura di database esistenti utilizzando EF 4.0 Codice Prima vedere questo post del blog. http://theminimalistdeveloper.com/2010/07/28/how-to-map-pocos-to-existing-databases-in-entity-framework-4-0-code-first-and-asp-net-mvc-2/

+0

il tuo Cons. non sono veri! a causa di un modello T4 è disponibile per sfruttare EF designer per supportare EF-Code First semplicemente! –

1

Contro:

  • Dal momento che non avete EDMX, non è possibile pregenerate vista
  • Non ancora licenza per go-live. Spero che questo cambi presto.

Pro

  • Poiché non c'è schema fisso, si può costruire dinamicamente uno in fase di esecuzione.

La maggior parte delle altre cose sono esattamente le stesse (caricamento lazy, caricamento esplicito, ecc.). Alcuni altri sono questioni di preferenza personale (l'API).

+0

Che ne dici di funzioni come lazy-load, chiavi iniziali, stored procedure, ecc.? –

+0

@Craig "Dato che non hai EDMX, non puoi pregenerare viste" Ho paura che questo non sia vero. È possibile generare viste in base alle classi del modello, indipendentemente dal fatto che si disponga o meno di file edmx. –

+0

@Bikal: Qual è la sintassi di EdmGen per questo? Un EF EF mi ha detto che non poteva essere fatto un anno fa. ... o stai confondendo le visualizzazioni MVC con le viste EF? –

0

Dal momento che hai chiesto specificamente il caricamento pigro, ecco una correzione che mostra Working with Lazy Loading with Entity Framework Code First, dove è abilitata per impostazione predefinita. Per rispondere in modo specifico a quella parte della tua domanda, sì con Code First hai ancora i vantaggi del Lazy Loading, e infatti come mostra la post, hai un controllo molto preciso su questa funzione.

Problemi correlati