2009-07-18 15 views
29

Używam Entity Framework.Jak wykonać pamięć podręczną Entity Framework dla niektórych obiektów?

W mojej bazie danych przechowywane są osoby i kraj ich pochodzenia. Kiedy ładuję obiekt osoby, nie wiem, co jest miejscem, z którego pochodzi każda osoba. Czy istnieje sposób na buforowanie listy krajów, aby nie było niepotrzebnych żądań.

+0

Bump. Czy w ciągu ostatnich 5 lat coś zmieniło się w EF, jeśli chodzi o buforowanie tabeli wyszukiwania? W szczególności, czy EF zintegrował w tym sposób? – RLH

Odpowiedz

40

Jak Luhmann powiedział już, że mój partner Jarek ma doskonałą próbkę dostawcy buforowania dla Entity Framework. Które mówi o here.

Jednak czasami takie podejście jest przesadą i podejrzewam, że kraje buforujące są dobrym przykładem, gdy wysiłek nie jest tego wart. Lepiej może zaimplementować jakieś buforowanie ad-hoc.

Jeśli spróbujesz to zrobić, to głównym problemem, który napotkasz, jest fakt, że instancja Entity Framework może być dołączana tylko do jednego obiektu ObjectContext w danym momencie, co oznacza, że ​​dostajesz współbieżne żądania (takie jak na stronie internetowej). będzie miał problemy, po prostu łapiesz przedmioty z pamięci podręcznej i używasz ich na ślepo.

Potrzebna jest pamięć podręczna do klonowania, tzn. Gdy pobierasz coś z pamięci podręcznej, klonuje je.

ułożyła cynk, który ilustruje, jak to zrobić Tip 14 - How to cache Entity Framework Reference Data

nadzieję, że to pomaga

Alex James

Entity Framework Zespół Microsoft.

+0

od momentu, w którym napisałeś tę wskazówkę do tej pory, istnieje prostszy sposób buforowania danych referencyjnych za pomocą EF 4.1? – Romias

+3

Dobra wskazówka Alex, czy są lepsze podejścia do nowych wydań EF? – NoChance

0

Najpierw będę przechowywać w pamięci podręcznej tę listę krajów i przypisz odpowiedni kraj każdej pobranej osobie. Jeśli zdecydujesz się również na buforowanie osób, powinieneś uzależnić je od krajów z pamięci podręcznej i unieważnić je, gdy dokonasz aktualizacji listy krajów/krajów.

Powiązane problemy