2010-10-15 16 views
10

Jeśli mam Entity Framework 4 kontekst, normalnie jakbym uruchomić kwerendę takich jak:Entity Framework 4 - zapobiec podstawowe buforowanie

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

a potem uruchomić coś innego:

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

dowolny obiekty zwrócone z drugiego zapytania, które również zostały zwrócone od pierwszego, nie zostaną załadowane z bazy danych. EF po prostu zabierze obiekt, który już posiada dla tego klucza.

Pytanie, jaki jest najlepszy sposób, aby wyłączyć tę funkcję? Czy mogę powiedzieć EF, aby załadował każdy potrzebny obiekt z bazy danych bez wyjątku?

Dzięki!

Odpowiedz

9

Musisz zmienić ustawienie MergeOption dla swojej jednostki, np.

db.Invoices.MergeOption = MergeOption.OverwriteChanges; 

oznacza, że ​​obiekty są zawsze ładowane ze źródła danych. Możesz również użyć NoTracking, aby całkowicie wyłączyć śledzenie, co może poprawić wydajność, jeśli nie musisz aktualizować danych lub ponownie używać zapytań. Wartością domyślną jest AppendOnly, które ma obserwowane zachowanie.

Powiązane problemy