2012-06-19 22 views
6

Ho letto articoli several e questions sul concetto di chiave esterna rispetto a relazione indipendente quando si utilizza Entity Framework. E non sono ancora sicuro al 100% quale direzione andare ... Preferirei non "inquinare" i POCO del mio dominio avendo una proprietà che verrà utilizzata nella relazione FK quando ho già un riferimento di proprietà a "ha un "oggetto.Foreign Key vs. Independent Relationships: c'è un miglioramento con Entity Framework 5?

Le mie domande sono (guardando a voi @EFTeam, @Ladislav Mrnka)

  1. sono lì eventuali miglioramenti su questo tema nel prossimo Entity Framework v5?
  2. ci sono più vantaggi se uso FK invece di associazioni indipendenti (in particolare con il codice prima)?

risposta

5

Se si dispone di un modello di grandi dimensioni, è necessario "inquinare" gli oggetti dominio (o il modello concettuale in generale) in ogni caso. Per i modelli con associazioni mappate FK, il costo della "generazione di viste" - una fase nella pipeline di elaborazione EF necessaria per eseguire query o salvare modifiche, una che può essere spostata in fase di costruzione ("viste di pre-generazione") - è inferiore rispetto ai modelli con associazioni indipendenti. Questo è importante perché la quantità di tempo necessaria per eseguirla potrebbe essere impercettibile per i modelli piccoli, ma diventa più lunga molto velocemente, specialmente quando ci sono associazioni mappate su chiavi esterne nullable (da -0.1 a 1 con entità derivate nelle gerarchie mappate TPH). Nella versione ufficiale EF5 performance considerations document viene fornita una differenza di esempio nel tempo di generazione della vista per un modello molto grande tra "oltre un mese e poi ci siamo arresi" (con associazioni indipendenti) e 104 minuti (con associazioni mappate FK). Nel mio caso (diverse centinaia di entità altamente connesse) è tra 25 minuti e 40 secondi. La situazione è la stessa in EF5 come nelle versioni precedenti.

+0

Ho anche un modello molto grande (oltre 75 entità). Sembra che l'uso delle relazioni FK sia raccomandato allora? – zam6ak

+0

Se non si notano ancora problemi di prestazioni (in particolare, lunga attesa prima su ".SaveChanges" e leggero ritardo sulla prima query che accede a un determinato set di entità) non è necessario utilizzare FK, se si desiderano le associazioni indipendenti dal codice più pulito dai di più. – cynic

2

Non ci sono miglioramenti. Entrambe le opzioni esistono ancora. Il vantaggio dell'utilizzo dell'associazione FK è la gestione semplificata delle modifiche nella relazione uno-a-molti quando si lavora con grafici di oggetti disconnessi. Dovrebbe anche semplificare l'associazione dei dati se la si utilizza.

+1

Sembra che le relazioni FK offrano maggiori vantaggi a costo di "inquinamento" dei POCO di dominio ... Puoi approfondire "Dovrebbe anche semplificare il binding dei dati se lo si utilizza". Cosa intendevi con questo - c'è un esempio (io sono una persona "visiva")? Grazie – zam6ak

Problemi correlati