Muss ich die SQL-Verbindung manuell schließen, wenn ich Linq verwende?

8

Traditionell, wenn wir SQL-String verwenden, um etwas Arbeit zu erledigen, müssen wir die SQL-Verbindung schließen, bevor die Seite geschlossen wird. Ich frage mich, ob ich Linq für die Datenoperationen brauche, muss ich die Verbindung trotzdem manuell schließen?

    
Cade Roux 30.12.2008, 17:09
quelle

3 Antworten

10

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.

    
Jon Skeet 30.12.2008, 17:17
quelle
2

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.

    
Amy B 30.12.2008 18:27
quelle
0

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.

    
Perpetualcoder 30.12.2008 17:14
quelle