Ich habe vor kurzem begonnen zu verwenden Dapper, alles scheint nett und einfach, aber es gibt eine Sache, die mich immer verwirrt: Connection Management.Verwalten von Verbindung mit nicht gepufferten Abfragen in Dapper
Gemäß der documentation:
Dapper nicht die Verbindung des Lebenszyklus nicht verwalten, nimmt er die Verbindung wird es offen ist und keine bestehenden Datareaders Aufzählen (es sei denn, MARS aktiviert ist)
In Anbetracht dessen begann ich dies innerhalb der Implementierung meiner Repository-Methoden:
using (var db = new SqliteConnection(connectionString)) {
// call Dapper methods here
}
Dann stieß ich auf eine Tabelle mit einer großen Anzahl von Datensätzen, so dass ich eine IEnumerable<T>
durch Übergeben buffered: false
an die Methode Query<>
zurückgab, und als ich begann, die Aufzählung im Front-End aufzuzählen, Boom eine Ausnahme, die die Verbindung geschlossen wurde und entsorgt, was erwartet wird, seit ich meine Anrufe mit dem vorhergehenden Benutzungsblock umschließe.
Frage: Der beste Weg, um das zu lösen?
Seitenfrage: Ist die Art, wie ich die Verbindung verwalte, der bevorzugte Weg, um darüber zu gehen?
Nur falls dies jemand anderes hilft, benutzte ich gepuffert: falsch und es korrigiert meine Verbindungsproblem w/adrett. – wintercyborg