¿Por qué Dapper no requiere una conexión abierta?

.net dapper

Pregunta

La documentación de Dapper establece que requiere una conexión abierta . Sin embargo, en el curso de visión plural de Steve Michelotti no abre la conexión antes de ejecutar SQL, y he descubierto que mi propia prueba de conexión a SQL Server y MS Access lo confirma.

¿Es una buena práctica controlar manualmente las conexiones o está bien dejar esto a Dapper? ¿Hay situaciones en las que Dapper requiere absolutamente que se proporcione una conexión abierta?

Aquí hay un ejemplo del código que estoy ejecutando contra una base de datos de Access. En ningún momento abro la conexión, sin embargo, Dapper devuelve alegremente una colección de objetos del Fondo:

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

Respuesta popular

Decidí publicar esto como una respuesta en su lugar porque los comentarios tienen opciones de formato limitadas y la duración máxima ... En segundo lugar, la sugerencia de TimSchmelter, "no crea la conexión como campo sino como variable local". Independientemente de si dapper dispone o no de la conexión, su código debería eliminarla tan pronto como no sea necesaria.

En este caso,

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


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué