为什么Dapper不需要打开连接?

时间:2015-06-09 15:52:14

标签: .net dapper

Dapper文档声明它需要open connection。但是在Steve Michelotti的pluralsight course中,他在执行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

1 个答案:

答案 0 :(得分:0)

决定将此作为答案发布,因为评论的格式选项和最大长度有限......我是第二个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