Warum benötigt Dapper keine offene Verbindung?

.net dapper

Frage

Die Dapper-Dokumentation besagt, dass eine offene Verbindung erforderlich ist. In Steve Michelottis Plurality-Kurs öffnet er jedoch die Verbindung nicht, bevor SQL ausgeführt wird, und ich habe festgestellt, dass meine eigenen Tests, die eine Verbindung zu SQL Server und MS Access herstellen, dies bestätigen.

Ist es das beste Verfahren, die Verbindungen manuell zu steuern, oder ist es in Ordnung, dies nur Dapper zu überlassen? Gibt es Situationen, in denen Dapper unbedingt eine geöffnete Verbindung benötigt?

Hier ist ein Beispiel für den Code, den ich gegen eine Access-Datenbank ausführe. Zu keinem Zeitpunkt öffne ich die Verbindung, aber Dapper gibt gerne eine Sammlung von Fundobjekten zurück:

Private ReadOnly _conn As IDbConnection = New OleDbConnection(ConnectionStrings.GetAccessConnectionString(ConnectionStrings.AccessVersion.v2003,
                                                                                                              ConfigurationManager.AppSettings("MSAccessLocation"), ""))
Public Function GetAll() As List(Of Fund) Implements IFundRepository.GetAll
        Return _conn.Query(Of Fund)("SELECT * FROM Funds").ToList()
End Function

Beliebte Antwort

Entschieden, dies als Antwort zu posten, denn Kommentare haben begrenzte Formatierungsoptionen und maximale Länge ... Ich zweite TimSchmelter's Vorschlag, "erstellen Sie nicht die Verbindung als Feld, sondern als lokale Variable." Unabhängig davon, ob Dapper die Verbindung disappariert oder nicht, sollte Ihr Code darüber verfügen, sobald er nicht benötigt wird.

In diesem Fall,

Public Function GetAll() As List(Of Fund) Implements IFundRepository.GetAll

    Using conn As IDbConnection = New DbConnection (_connectionString)

        Dim funds As List(Of Fund) = _conn.Query(Of Fund)("SELECT * FROM Funds").ToList()

        Return funds

    End Using

End Function


Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow