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
答案 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