2009-01-19 7 views
21

Ich bin nicht so klar auf die Best-Practice in Bezug auf die Verwendung und Wiederverwendung der Entity-Framework Context.Soll ich den Entity-Framework-Kontext freigeben oder für jede Operation einen neuen Kontext erstellen?

Meine Frage ist, sollte ich versuchen, 1 Kontext zu erstellen und mehrfach für verschiedene Abfragen zu verwenden oder sollte ich einen neuen Kontext für jede Abfrage erstellen?

Zum Beispiel, wenn ich ein Formular mit 10 Charts alle mit Daten aus den gleichen Tabellen abgefragt haben, sollten die 10 Abfragen aus dem einen Kontext oder 10 verschiedenen Kontexten sein?

Von einem Code-Encapsulation-Point-of-View würde ich lieber 10 neue Kontexte erstellen, ist das eine gute Idee und ist es skalierbar?

Antwort

10

Es hängt alles von Ihrer App.

Eine wichtige Überlegung ist, dass ObjectContext nicht threadsicher ist, also für eine Webanwendung ObjectContext pro Anfrage ist der Weg zu gehen.

Für eine Win Forms-App können Sie langlebigere ObjectContexte verwenden. Wenn Sie es jedoch vorziehen, die Dinge enger zu fassen, würde ich das zuerst versuchen, anstatt es vorzeitig zu optimieren.

Mehr auf Danny Simmons Blog here.

+0

Danke für den Link, es lieferte die Informationen, die ich brauche, um verschiedene Kontexte für die Situation in meiner Frage zu schaffen. Auch ich hatte die Detach-Methode vorher nicht bemerkt, so dass sie für zukünftige Projekte nützlich sein wird. – Rhys

2

IMHO - ich könnte falsch sein, aber das ist, wie ich es tun ...

Wenn Sie über das Modell sprechen - Kontext ein verwenden. Da braucht man nur ein Model - Context in dem abgefragt werden soll - also das ist das Datenbankmodell.

Wenn Sie über ObjectContext sprechen - dann eine für jede Abfrage (Linq). Nehmen Sie einen Blick auf diese Performance Considerations for Entity Framework

+0

Ein sehr guter Link, der bei der Erstellung vieler Kontexte einige Ängste bezüglich der Leistung verringert hat. – Rhys

Verwandte Themen