Sollte dapper eine "using" Aussage verwenden?

c# dapper micro-orm

Frage

Ich habe Beispiele gesehen, wo jemand ist:

IDbConnection db = new MySqlConnection(conn);

var people = db.Query<People>("SELECT * FROM PEOPLE").ToList();

oder ist das obige eine schlechte Übung und sollten alle Abfragen mit Anweisungen wie folgt eingegeben werden:

using (var db = new MySqlConnection(conn))
{
var people = db.Query<People>("SELECT * FROM PEOPLE").ToList();
}

Akzeptierte Antwort

Wie andere korrekt angemerkt haben, besteht die beste Vorgehensweise im Allgemeinen darin, jederzeit zu verwenden using wenn ein Objekt IDisposable implementiert, und Sie wissen, dass die Lebensdauer des Objekts kurz sein wird - also nicht länger als die Dauer der aktuellen Methode. Dies stellt sicher, dass knappe Ressourcen des Betriebssystems zeitnah aufgeräumt werden. Selbst wenn ein Objekt durch seinen Finalisierer "entsorgt" wird, möchten Sie sich nicht in einer Situation befinden, in der Sie beispielsweise eine Datei oder Datenbank sperren oder etwas, das erst freigegeben wird, wenn der Finalizer mehrere ausführt Milliarden Nanosekunden von jetzt an.

Allerdings würde ich diesen Ratschlag IDisposable , indem ich sage, dass es eine kleine Anzahl von Typen gibt, die IDisposable aus anderen Gründen als der rechtzeitigen Entsorgung nicht verwalteter Ressourcen implementieren. In einigen sehr speziellen Fällen können Sie die using sicher überspringen. Es ist jedoch fast nie falsch , die Verwendung zu using , auch wenn es nicht genau notwendig ist , so dass mein Rat an Sie ist, auf der Seite von Vorsicht und Übergebrauch zu irren, anstatt unter Verwendung zu using .


Expertenantwort

Dapper hat dazu keine Sicht; was Sie using hier ist die Datenbankverbindung. Wenn Sie mit der Verbindung fertig sind: Sie haben die Verbindung beendet. Grundsätzlich, ja, solltest du wahrscheinlich mit using .



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum