这是我自己帮助器的代码片段,但它有一些错误。
/// <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应该自动关闭,如何结束我的帮助?提前谢谢。
答案 0 :(得分:2)
奇怪的是,这里的一个选项可能是:不要给它一个开放的连接。这还没有部署到nuget,但是如果你从github中提取版本,它实际上现在需要更多的控制连接。所有主要方法(Query[<T>]
,QueryMultiple
,Execute
)现在可以正常使用已关闭的连接,并在可以时再次关闭它。所以如果你有了:
return GetClosedConnection(connectionName).QueryMultiple(sql, param);
然后当GridReader
到达数据末尾时它会自动关闭。请注意,我已重新构建它以确保在离开方法时我们没有Dispose()
连接。