2010-10-15 23 views
10

Se ho un quadro 4 contesto entità, normalmente se ho eseguito una query come:Entity Framework 4 - evitare la memorizzazione nella cache di base

db.Invoices.Where(I => whatever); 

e poi eseguire un'altra cosa:

db.Invoices.Where(I => something_else); 

qualsiasi gli oggetti restituiti dalla seconda query, che sono stati restituiti anche dal primo, non verranno caricati dal database. EF prenderà solo l'oggetto che ha già per quella chiave.

Domanda, qual è il modo migliore per disattivare questa funzione? Posso dire a EF di caricare tutti gli oggetti di cui ha bisogno dal database senza eccezioni?

Grazie!

risposta

9

È necessario modificare l'impostazione MergeOption per la propria entità, ad es.

db.Invoices.MergeOption = MergeOption.OverwriteChanges; 

OverwriteChanges significa che gli oggetti vengono sempre caricati dall'origine dati. È inoltre possibile utilizzare NoTracking per disattivare completamente il monitoraggio, che può migliorare le prestazioni se non è necessario apportare aggiornamenti ai dati o riutilizzare le query. Il valore predefinito è AppendOnly che ha il comportamento che hai osservato.

Problemi correlati