2012-04-14 12 views
2

Ich habe ein ziemlich großes SQL-gesichertes ASP.NET-Projekt, das Entity Framework verwendet, um mit der Datenbank zu interagieren.Steuern, wie oft ein Entity Framework ObjectContext erstellt wird

Meine Frage ist, sollte ich eine Instanz des ObjectContext von den Edmx/Designer-Dateien in jeder Klasse/Methode definiert-oder um eine statische Klasse wickeln, die Onload instanziieren und grundsätzlich alle Anfragen über eine Instanz behandeln würde.

Ich werde mehrere Benutzer mit dem ObjectContext zum Lesen und Aktualisieren der DB haben, Nebenläufigkeit und Thread-Sicherheit sind meine größten Sorgen.

EDIT: Dieser Code würde letztlich in IIS laufen und für das Recycling anfällig sein.

Antwort

1

In den meisten Fällen benötigen Sie nur einen Kontext für jede Anfrage. Nur spezielle Szenarien können mehr Kontexte pro einzelne Anfrage erfordern, aber never share context among requests.

0

Die ObjectContext-Klasse ist nicht Thread-sicher. Die Integrität der Daten Objekte in einem ObjectContext kann nicht in Multithread Szenarien sichergestellt werden.

Quelle: http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontext.aspx

Daher ist der beste Ansatz ist es, eine Object pro HTTP-Anforderung zu verwenden. Machen Sie eine RepositoryBase Klasse, die jedes Repository von und in der RepositoryBase definiert CRUD-Operationen (vorzugsweise generische) und erstellen Sie eine neue Instanz von nur wenn es null auf Anfrage für es.

Verwandte Themen