Sollen Datenkontexte statisch sein?

8

Ich verwende das Entity Framework 4 und erstelle ein datacontext für das Model in einer der Basisklassen. Aber ich war dabei, es zu profilieren, und der Kontext wird jedes Mal erstellt, wenn ich versuche abzufragen. Also dachte ich daran, es statisch so zu machen, dass es nur einmal erstellt und immer wieder verwendet wird.

Glauben Sie, dass dies der beste Weg ist, dies zu tun, und der Daten / Objekt-Kontext sollte immer statisch gemacht werden? Gibt es irgendwelche Nachteile, um es statisch zu machen? Sollten Datenkontexte statisch oder nicht-statisch sein? Irgendwelche Ideen oder Vorschläge sind willkommen.

    
Vishal 02.11.2010, 18:46
quelle

2 Antworten

9

Nein. Sie sollten nicht immer statisch sein.

Sie können tatsächlich zu vielen weiteren Problemen mit einem statischen Datenkontext statt zu einer nicht statischen Entsprechung (wie mehrere Benutzer aus separaten Sitzungen, die von mehreren Threads auf denselben Kontext zugreifen) zugreifen.

Ich werde nicht auf die detaillierte Erklärung eingehen, da es einige sehr gute Blogposts gibt, die die Details behandeln:

Linq zu SQL DataContext Lifetime Management - Rick Strahls Weblog (möglicherweise nicht relevant, ist aber immer noch)

Making Entity Framework ( v1) Arbeit, Teil 1: DataContext Lifetime Management (für eine mögliche Alternative, wenn Sie Ricks Lösung nicht mögen)

    
Justin Niessner 02.11.2010, 18:47
quelle
5
  

Sollen Datenkontexte immer statisch sein?

Nein, sie sollten (fast * ) niemals statisch sein. DataContext sind billig zu erstellen, da sie als Arbeitseinheit verwendet werden sollen. Sie sollten also ein DataContext pro "Konversation" haben (was auch immer das für Ihren Kontext bedeutet).

* : Die richtige Antwort ist wahrscheinlich, dass sie niemals statisch sein sollten, aber ich bin immer skeptisch gegenüber Programmiertipps, die immer oder nie sind. Also, das ist ein Weenie wackeln mehr als alles andere.

    
jason 02.11.2010 18:56
quelle