Dies ist sehr ähnlich (aber nicht ganz ein Duplikat von) diese Frage .
LINQ to SQL öffnet und schließt Verbindungen bei Bedarf - Sie müssen den DataContext nicht wirklich beseitigen. Es gibt jedoch Zeiten, in denen Sie den Kontext "austricksen" können, um eine Verbindung offen zu lassen, wenn Sie es nicht sollten - ich persönlich entledige es gerne als eine Selbstverständlichkeit. Siehe meine Antwort auf die andere Frage für ein bisschen mehr Detail von Matt Warren vom LINQ to SQL Team.
Ich kenne das Entity Framework jedoch nicht.
Ich habe im Detail eine Frage über das Schließen von Verbindungen beantwortet, die Sie vielleicht interessant finden. hier .
Microsoft hat diese Frage hier beantwortet:
Q. Wie lange dauert meine Datenbank? Verbindung bleibt offen?
A. Eine Verbindung bleibt in der Regel offen bis Sie die Abfrageergebnisse konsumieren. Wenn Sie erwarten, dass es Zeit braucht, um zu verarbeiten alle Ergebnisse und sind nicht dagegen Zwischenspeichern der Ergebnisse, Anwenden von ToList & lt; (Of & lt; (TSource & gt;) & gt;) zu der Abfrage. Gemeinsam Szenarien, in denen jedes Objekt ist verarbeitet nur einmal, das Streaming Modell ist in beiden DataReader überlegen und LINQ zu SQL.
Die genauen Details der Verbindungsnutzung hängt von Folgendem ab:
Verbindungsstatus wenn der DataContext ist mit einer Verbindung aufgebaut Objekt.
Verbindungszeichenfolgeneinstellungen (für Beispiel, aktivieren Sie mehrere aktiv Ergebnismengen (MARS). Für mehr Informationen finden Sie unter Mehrfach aktiv Ergebnismengen (MARS).
Weitere Details finden Sie hier :
Sie können eine vorhandene ADO.NET-Verbindung bereitstellen, wenn Sie einen LINQ to SQL DataContext erstellen. Alle Operationen mit dem DataContext (einschließlich Abfragen) verwenden diese bereitgestellte Verbindung. Wenn die Verbindung bereits geöffnet ist, wird sie von LINQ to SQL unverändert belassen.
Im Code müssen Sie keine Verbindungen öffnen und schließen. IMO a LinqDataContext sollte jedoch als eine Ressource wie SqlConnection oder SqlCommand behandelt werden und sollte ein Teil des using-Blocks sein, so dass Sie es entsorgen, wenn Sie nicht verwenden. Obwohl ich auf MSDN gelesen habe, dass dies nicht notwendig ist, aber es ist eine gute Übung.
Tags und Links sql-server linq visual-studio-2008