Domanda

Ho l'impressione che

  • EF con POCO: consente di mappare i propri POCO alle entità sul modello (.edmx).
  • Solo codice EF: no edmx / model designer (es. metadati CSDL / SSDL / MSL (collettivamente EDMX)). Ancora i POCO ma i mapping, le relazioni, la navigazione, ecc. Sono tutti codificati manualmente (da cui solo la descrizione, solo codice).

Se questa descrizione dei due concetti è (più o meno) corretta, perché qualcuno dovrebbe fare un codice solo anziché EF con POCO?

Entrambi stanno facendo i POCO, ma il secondo ha l'onere aggiuntivo di dover fare anche la mappatura, manualmente?

È stato utile?

Soluzione

  1. Il codice è ottimo solo se vuoi scrivere la mappatura a mano senza dover scorrere in XML. Anche il progettista di edmx diventa ingombrante dopo circa 50 modelli, è solo un peso da usare in questo modo.

Quando qualcosa va storto nel tuo XML di mappatura è davvero un PITA per scavare nel file XML per apportare le correzioni necessarie. Anche il designer si interrompe se inizi a modificare manualmente il tuo xml in determinati scenari.

Ora non conosco i dettagli ma il designer in EF1 non supportava tutte le opzioni di mappatura disponibili. Il designer EF4 ha alcuni miglioramenti (mi vengono in mente le relazioni unidirezionali) ma non sono sicuro che abbia la parità di funzionalità con i mapping manuali.

  1. Sì.

Altri suggerimenti

L'unica cosa che aggiungerei alla risposta di jfar è che con Code-Only non hai per creare mappature.

I mapping possono essere dedotti per convenzione il più delle volte.

Il punto sulla vista pre-generazione è importante. Non ho sentito che Microsoft non ha alcuna intenzione di fornire la pre-generazione solo per il codice. Se qualcuno conosce qualcosa di diverso, si prega di pubblicare.

Ho usato solo il codice per 400 tabelle come parte di un'indagine sull'opportunità di utilizzare EF4 o NHibernate e vi è un ritardo iniziale di 80 secondi per la generazione della vista, esattamente come quando si utilizza il designer, ma con il designer è possibile visualizzare la pre-generazione che ha portato il ritardo a 10 secondi. Se non sei felice di dividere il tuo modello e hai oltre 75 tabelle, non utilizzare solo il codice.

Non credo che solo il codice ti consenta attualmente di visualizzare visualizzazioni anticipate, quindi potrebbe esserci un costo per le prestazioni. Questo potrebbe cambiare prima del rilascio.

Qualcos'altro che non è stato menzionato è che si ottiene il controllo completo in fase di compilazione della sintassi quando si utilizza Solo codice. Se si utilizza Visual Designer con EDMX, si ottiene un controllo in fase di compilazione, ma è limitato. Per i modelli più grandi, EDMX diventa estremamente impassibile e scrivere manualmente CSDL, SSDL e MSL è l'unico modo decente per gestire modelli estremamente grandi con mappature XML. Non si ottiene alcun controllo in fase di compilazione se si gestiscono manualmente i mapping.

Con Solo codice, hai il vantaggio di controllare completamente i tempi di compilazione per modelli di qualsiasi dimensione, anche se hai centinaia o migliaia di entità con cui devi lavorare. Inoltre, si ottiene meno "disordine", poiché il prodotto finale è costituito da tutti gli assiemi compilati, anziché da una combinazione di assiemi e vari tipi di file XML.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top