Frage

In LINQ to SQL ist es notwendig, den Kontext zu schließen, nachdem eine ausgewählte auf der Datenbank durchführt (und natürlich nach den Daten raubend)? wenn ich es offen zu lassen, bedeutet es nicht, dass die Verbindung zum Server offen gelassen wird?

Danke, Lucian

War es hilfreich?

Lösung

Die zugrunde liegende Verbindung nicht geschlossen ist und angeordnet, bis Sie die Datacontext zu schließen, Dispose-Methode. Sie sollten immer Entsorgen Sie rufen nach dem Datacontext verwenden. Denken Sie an der Datacontext als traditionelles Connection-Objekt, das mehr oder weniger, was es unter der Haube ist.

Andere Tipps

Q. Wie lange dauert meine Datenbankverbindung geöffnet bleiben?

A. Eine Verbindung bleibt normalerweise geöffnet, bis Sie die Abfrageergebnisse verbrauchen. Wenn Sie einige Zeit dauern, erwarten alle Ergebnisse zu verarbeiten und nicht die Ergebnisse im Gegensatz zu Cachen, gelten ToList (TSource) auf die Abfrage. Gemeinsam Szenarien, in denen jedes Objekt nur einmal verarbeitet wird, ist das Streaming-Modell überlegen in beide DataReader- und LINQ to SQL.

Die genauen Details der Anschlussnutzung hängt von den folgenden:

Verbindungsstatus, wenn die Datacontext mit einem Verbindungsobjekt aufgebaut ist.

Verbindungszeicheneinstellungen (zum Beispiel ermöglicht Multiple Active Result Sets (MARS). Weitere Informationen finden Sie unter Mehrere Active Result Sets (MARS).


MSDN LINQ to SQL FAQ

Ich bin ein wenig unsicher über die Namen von allem in Linq. In Entity Framework bedeutet dies, dass der Objektkontext versucht, Änderungsverfolgung zu tun, die bei einem nicht verbundenen Szenario einer Menge Probleme verursacht.

ASP.NET ist leider nicht sehr kompatibel mit Änderung heute Tracking so den Kontext schließt nach dem Gebrauch der beste Weg ist, Entity Framework in asp.net zu behandeln. Wenn ich versuche, tyhe Kontext offen zu lassen ich manchmal Probleme hat Entitäten zu aktualisieren Ich glaube, es sollte das gleiche Problem in Linq sein.

In einem Windows Forms-Anwendung mit der Datenbank auf demselben Computer oder in einem lokalen Netzwerk ich den Objektkontext durch eine Fassade (weniger Code-Duplizierung) wieder verwenden würde in der Lage sein von der Änderungsverfolgung und direkte Verbindung zur Datenbank zu profitieren.

Die kurze Antwort ist ja, Sie nur eine Datacontext öffnen sollten, wenn es gebraucht wird und die es so schnell wie möglich schließen. Wenn Sie es nicht entsorgen, die zugrunde liegende Datenbankverbindung kann offen bleiben.

Es gibt viele andere Menschen waren bereits ähnliche Fragen zu stellen. Hier finden Sie ein paar ziemlich gute Diskussionen finden, wenn Sie überprüfen einige von sie out .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top