Frage

Ich habe mehrere Methoden, die mit DB und alle von ihnen beschäftigen beginnen durch den Aufruf

FaierDbDataContext db = new FaierDbDataContext();

Da das Linq2Sql Datacontext Objekt IDisposable implementiert, sollte dies mit „mit“ verwendet werden?

using (FaierDbDataContext db = new FaierDbDataContext()) {
    // use db here
}

Was sind die Auswirkungen der Verwendung es eine oder andere Weise?

War es hilfreich?

Lösung

  

Im Gegensatz zu den meisten Arten, die Umsetzung   IDisposable, tut nicht Datacontext   wirklich braucht Entsorgung - zumindest nicht   in den meisten Fällen. Ich fragte Matt Warren   über diese Design-Entscheidung, und hier   war seine Antwort:

     

Es gibt ein paar Gründe, warum wir umgesetzt   IDisposable:

     
      
  • Wenn die Anwendungslogik muss auf eine Entität über, wenn das halten,   Datacontext wird erwartet, verwendet werden oder   gültig können Sie diesen Vertrag durchzusetzen durch   Aufruf von Dispose. Latente Lader   dass Unternehmen wird nach wie vor werden Referenzierung   die Datacontext und werden versuchen, es zu benutzen   Wenn jeder Code versucht die navigieren   latente Eigenschaften. Diese Versuche   wird versagen. Entsorgen Sie auch zwingt die   Datacontext dump seinen Cache von   materialisiert Einheiten, so dass ein einzelnes   gecached Einheit nicht versehentlich   am Leben erhalten alle Einheiten materialisiert   durch diese Datacontext, die würden   verursachen sonst, was ein zu sein scheint   Speicherleck.
  •   
  • Die Logik, die automatisch die Datacontext Verbindung geschlossen sein kann   ausgetrickst in die Verbindung verlassen   öffnen. Die Datacontext stützt sich auf die   Anwendungscode Aufzählen all   Ergebnisse einer Abfrage, da immer zu   das Ende eines Suchresultates löst die   Verbindung zu schließen. wenn die   Anwendung verwendet IEnumerable des   Movenext Verfahren anstelle eines foreach   Anweisung in C # oder VB, können Sie beenden   die Aufzählung vorzeitig. Wenn dein   Anwendungserfahrungen Probleme mit   Verbindungen nicht zu schließen und Sie   vermuten, dass die automatische Schließverhalten   arbeitet nicht, können Sie die Dispose verwenden   Muster als eine Arbeit um.
  •   

vom Quelle

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