risposta

6

Penso che questa sia una domanda puntuale, come mi chiedevo la stessa cosa. Sto cercando di creare un serio modello di e-commerce e sto cercando di mantenere i miei POCO privi di problemi di persistenza, oltre a cercare di rimanere fedele a Domain Driven Design. Finora, sono molto prudente, e sono fuori di testa se dovrei saltare la nave a NHibernate. L'unica cosa che mi impedisce di farlo è che presumo che Microsoft migliorerà (e rapidamente).

Alcuni dei più grandi problemi finora:

  • Incapacità di finemente materializzazione oggetto di controllo. EF chiama il costruttore zero-arg sul tuo POCO, e questo è un comportamento che non puoi cambiare.
  • Nessun supporto enum. La comunità ha urlato - urlando! - per questo, e non è successo. I workaround sono terribili e inquinano il tuo modello di dominio.
  • bug mappatura strano quando si cerca di controllare i nomi delle colonne e le relazioni nel database. I principali a cui riesco a pensare sono le chiavi composte e le relazioni molti-a-molti. Questi possono essere risolti, e presumo che questi saranno fissati dal tempo di rilascio, ma sono comunque frustranti.
  • SQL non valido. Faccio anche il DBA e l'SQL che EF genera (con o senza Code-First) è atroce.

E questa è solo la punta dell'iceberg: sto solo iniziando a imparare EF4 e sto correndo in posti di blocco terribili. Poiché penso a più motivi, li aggiungerò qui. Ci sto ancora lottando.

(mi chiedo se la comunità darà un altro voto di "sfiducia".)


Più:

  • Per aggiungere al problema "Weird bug mappatura": non è possibile controlla il nome di una colonna se partecipa a una relazione autoreferenziale (ad esempio, se hai una gerarchia). Presumo che questo sarà risolto nella versione finale.
  • Mancanza di dosaggio, con conseguente più andata e ritorno al database. Ad esempio, come si elimina un gruppo di elementi da una raccolta? Caricare tutte le entità in memoria ed eliminarle una alla volta. Un piccolo difetto è il numero di accessi al DB durante l'inserimento in tabelle che partecipano a una relazione di ereditarietà.
  • No modo intelligente per affrontare le modifiche del modello. Codice EF: per prima cosa, ad esempio, elimina completamente l'intero database se è necessario modificare lo schema.
  • punti di estendibilità pochi. Puoi letteralmente contare su una sola mano il numero di eventi a cui EF4 ti permette di iscriverti (e Code-First non fornisce molto di più).
+0

Questo è molto interessante e utile. Spero di più che la gente commenta prima che i troll chiudano questo thread. –

+0

Vorrei anche saperne di più, dato che sono/molto/in conflitto sull'impegno con il codice EF4. – anon

+0

Questa è una lista molto buona. Tutti i punti validi che ho sperimentato negli ultimi mesi. Ho anche aggiunto la mancanza di supporto per il tipo di dati "GEOGRAFIA" di EF4 (SQL Server) e l'impossibilità di passare i tipi di tabella definiti dall'utente (anche SQL Server) ai processi memorizzati. Per combattere il primo, ho dovuto usare i grilletti, per combattere il secondo ho degaraded al classico ADO.NET. – RPM1984

0

Quanto a me - preferisco EF, ma con alcuni miglioramenti.Fondamentalmente EF vi offre i seguenti vantaggi:

  • Visual Model Editor
  • Database/Modello Aggiornamento procedura guidata (al posto di modifiche manuali XML - ciò che è terribile per me)

Inoltre, io sono utilizzando strumenti 3-rd parti commerciali a base di EF e L2S (LinqConnect) che forniscono per me le seguenti caratteristiche:

+0

NHibernate ha anche molti designer diversi. Puoi usarlo con fluenti e automappings senza xml – Sly

+0

Puoi pubblicare un link per questi designer? – JackD

Problemi correlati