如何在第三个库中的SqlMapper GridReader之后自动关闭SqlConnection

时间:2012-10-22 00:42:56

标签: dapper

这是我自己帮助器的代码片段,但它有一些错误。

  /// <summary>
  /// Execute a command that returns multiple result sets, and access each in turn
  /// </summary>
  public static  SqlMapper.GridReader QueryMultiple(string sql, dynamic param = null, string connectionName = null)
  {

      using (SqlConnection connection = GetOpenConnection(connectionName))

      { return connection.QueryMultiple(sql, param);}

  }

QueryMultiple由外部程序手动调用和关闭。不久之后,SqlConnection应该自动关闭,如何结束我的帮助?提前谢谢。

1 个答案:

答案 0 :(得分:2)

奇怪的是,这里的一个选项可能是:不要给它一个开放的连接。这还没有部署到nuget,但是如果你从github中提取版本,它实际上现在需要更多的控制连接。所有主要方法(Query[<T>]QueryMultipleExecute)现在可以正常使用已关闭的连接,并在可以时再次关闭它。所以如果你有了:

return GetClosedConnection(connectionName).QueryMultiple(sql, param);

然后当GridReader到达数据末尾时它会自动关闭。请注意,我已重新构建它以确保在离开方法时我们没有Dispose()连接。