2009-07-18 21 views
29

Ich benutze Entity Framework.Wie Entity Framework einige Objekte zwischenspeichern kann

In meiner Datenbank sind Personen und Land ihrer Herkunft gespeichert. Wenn ich ein Personenobjekt lade, möchte ich nicht wissen, woher die Person kommt. Gibt es eine Möglichkeit, die Liste der Länder im Cache zu speichern, damit keine unnötigen Anfragen eingehen?

+0

Bump. Hat sich bei EF in 5+ Jahren etwas in Bezug auf Look-Up-Table-Caching geändert? Konkret, hat EF einen Weg integriert, dies zu tun? – RLH

Antwort

40

Wie Luhmann bereits gesagt hat, hat mein Kollege Jarek einen exzellenten Sample Caching Provider für das Entity Framework. Worüber er spricht here.

Aber manchmal ist dieser Ansatz zu viel, und ich vermute, dass Caching-Länder ein gutes Beispiel ist, wo sich die Mühe nicht lohnt. Es ist vielleicht besser, eine Art Ad-hoc-Caching zu implementieren.

Wenn Sie versuchen, dies zu tun, ist das Hauptproblem, dass Sie eine Instanz Entity Framework-Entity zu einem Zeitpunkt nur an einen ObjectContext angeschlossen werden kann, was bedeutet, wenn Sie gleichzeitige Anfragen (wie in einer Website) erhalten Sie Es wird Probleme geben, wenn du einfach Gegenstände aus dem Cache schnappst und sie blind benutzt.

Was Sie brauchen, ist ein Klonen Cache, also wenn Sie etwas aus dem Cache greifen klonen sie.

habe ich eine Spitze zusammen, die zeigt, wie diese Tip 14 - How to cache Entity Framework Reference Data

Hoffnung zu tun, hilft diese

Alex James

Entity Framework-Team von Microsoft.

+0

Von dem Moment an, als Sie diesen Tipp geschrieben haben, gibt es eine einfachere Möglichkeit, Referenzdaten mit EF 4.1 zu cachen. – Romias

+3

Guter Tipp Alex, gibt es bessere Ansätze mit den neuen Versionen von EF? – NoChance

0

Ich würde diese Länderliste zuerst zwischenspeichern und jeder abgerufenen Person das entsprechende Land zuweisen. Wenn Sie sich entscheiden, auch Personen zu cachen, sollten Sie diese von den zwischengespeicherten Ländern abhängig machen und sie ungültig machen, wenn Sie die Länder-/Länderliste aktualisieren.

Verwandte Themen