Dapper如何在不显式打开连接的情况下执行查询?

时间:2019-01-27 13:56:57

标签: dapper

我们正在使用Dapper进行某些数据访问活动,并使用推荐的标准方法来连接数据库,如下所示:

using (var conn = ConnectionFactory())
{
   conn.Open();
   var result =  await conn.ExecuteAsync(sql, p, commandType: CommandType.StoredProcedure);
   return result;
}

但是,如果我们尝试执行一条语句,则在文档中显示您需要先声明:

conn.open()

这意味着,您必须显式打开连接。但是,如果我们省略语句private fun createFragment(fragmentClass: Class<*>, fragmentArgs: Bundle?): Fragment { try { val fragment = fragmentClass.newInstance() as Fragment fragment.arguments = fragmentArgs return fragment } catch (exception: Exception) { throw RuntimeException(exception.message) } } ,它也可以工作,并且我们担心在这种情况下可能无法正确处理连接。

对于在没有明确打开任何连接的情况下如何执行SQL的任何评论,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

Dapper提供了两种处理连接的方法。

首先是-允许Dapper处理它。
在这里,您无需先打开连接,就可以将其发送给Dapper。如果输入连接未处于打开状态,则Dapper将打开它-Dapper将执行操作-Dapper将关闭连接。

这将仅关闭连接。 Open/Close比处置different多。因此,如果您真的想处置连接,最好改用第二种方式。

第二个是-自己处理。
在这里,您应该自己显式创建,打开,关闭和处置连接。

有关更多详细信息,请参阅以下链接:
https://stackoverflow.com/a/51138718/5779732
https://stackoverflow.com/a/41054369/5779732
https://stackoverflow.com/a/40827671/5779732