Почему Dapper не требует открытого соединения?

.net dapper

Вопрос

В документации Dapper указано, что для этого требуется открытое соединение . Однако в курсе множественного роста Стив Микелотти он не открывает соединение перед выполнением SQL, и я обнаружил, что мое собственное тестирование, связанное с SQL Server и MS Access, подтверждает это.

Лучше всего вручную управлять соединениями или это прекрасно, просто оставить это для Dapper? Существуют ли ситуации, когда Dapper абсолютно требует наличия открытого соединения?

Вот пример кода, который я выполняю в базе данных Access. Ни при каких обстоятельствах я не открываю соединение, однако Dapper с радостью возвращает коллекцию объектов Fund:

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

Популярные ответы

Решено опубликовать это как ответ вместо этого, потому что комментарии имеют ограниченные варианты форматирования и максимальную длину ... Я предлагаю второе предложение TimSchmelter: «Не создавайте соединение как поле, а как локальную переменную». Независимо от того, использует ли dapper соединение, ваш код должен избавиться от него, как только он не понадобится.

В этом случае,

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


Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему