2009-07-02 5 views
0

Mit Linq, erstellen Sie einen einzelnen dbContext pro Anfrage wie nHibernate erfordert (aus Gründen der Leistung, Erstellen von Sitzungen in Nhibernate von dem, was ich verstehe, sind ein teurer Anruf).Mit Linq, erstellen Sie einen einzelnen dbContext pro Anfrage wie nHibernate erfordert?

d. H. In meiner asp.net-mvc-Anwendung, kann ich für eine bestimmte Aktion, die Datenbank 5-10 mal bei separaten Anrufen. Muss ich einen Kontext erstellen und ihn für die gesamte Anfrage erneut verwenden?

Antwort

-1

Als ich eine kleine App mit LinqToSql erstellte, fand ich die App sehr träge, als ich jedes Mal ein DatabaseContext-Objekt anlegte, wenn ich die Datenbank durchsuchen musste. Als ich den DBContext für mehrere Anfragen freigegeben habe, kam die App plötzlich wieder ins Leben zurück. Empfänglichkeit.

Hier a question, die ich geschrieben, welche

relevant ist
9

Datacontexts sind für einen einzigen Satz von Aktionen mit der Datenbank interagieren verwendet werden. Ich weiß, das ist vage. Ihre Verwendung ist situationsbedingt. Wenn Sie verwandte oder speziell sequenzielle Aktivitäten ausführen, ist ein DataContext wahrscheinlich gut für Sie. Wenn Sie unabhängige oder parallele Aktivitäten ausführen, sollten Sie einen DataContext für jede Aktivität verwenden.

Betrachten wir einige Richtlinien:

  • von einem Datacontext abgerufenen Entitäten nur verwendet werden können (sprich: aktualisiert, gelöscht, etc.) von demselben Datacontext. Wenn Sie Objekte in separaten DataContexts abgleichen müssen, müssen Sie beispielsweise eine LINQ-Abfrage ausführen, um Objekte mit demselben Primärschlüssel auszuwählen.
  • LINQ to SQL verwendet optimistic concurrency.
  • Entsorgen Sie den DataContext, wenn Sie damit fertig sind (lassen Sie ihn außerhalb des Gültigkeitsbereichs und die Sammlung ist sauber)
  • Verwenden Sie keinen statischen oder freigegebenen DataContext.
+1

Dies ist die richtige Antwort. DataContexte sind ziemlich leichte Objekte und sollten für ziemlich atomare Operationen herumgehalten werden. Danach werden sie los. Anweisungen für den Gewinn verwenden. – mmcdole

Verwandte Themen