2010-04-06 21 views
5

Che cosa si perde creando POCO utilizzando i modelli T4 nell'entità framework 4.0? Perché il comportamento predefinito si utilizza quando si utilizza il framework di entità 4.0 non per creare POCO?Entity framework POCO

risposta

3

Si perde un certo numero di cose. Un POCO "puro" è di uso limitato in un ORM, perché non cambierà il tracciamento. In altre parole, quando si modifica l'oggetto e si salvano le modifiche nel contesto, si desidera che le proprietà modificate vengano salvate nel database. Con un POCO "puro" puoi farlo con il rilevamento delle modifiche basato su snapshot, che è abbastanza inefficiente. Puoi farlo anche con i proxy di runtime, che ti costringono a creare le proprietà della traccia public virtual, quindi probabilmente non hai più un "POCO". Inoltre, l'utilizzo di proxy significa che non si conosce il vero tipo di runtime dell'istanza.

Si perdono anche alcune delle proprietà di comodità come EntityState.

I POCO "puri" non possono eseguire il caricamento lazy. Di nuovo, puoi aggirare questo problema con i tipi di proxy, ma, di nuovo, se stai usando i proxy, non hai veramente un POCO "puro".

Oltre a tutto ciò, è meno necessario utilizzare le entità POCO in Entity Framework piuttosto che in altri ORM. Questo perché puoi sempre proiettare i tuoi tipi di entità su istanze POCO usando LINQ, senza dover materializzare prima le istanze di entità. Quindi i POCO "puri" sono sempre disponibili in un'applicazione Entity Framework, anche se non ti capita di mappare le tue entità in quel modo.

+0

Potresti commentare il test dell'unità con non POCO? – rkrauter

+1

Il test dell'unità con non POCO funziona correttamente. Nessun problema per me. –

+0

Grazie per la risposta! – rkrauter

Problemi correlati