1

これは私自身のヘルパーからのコード スニペットですが、いくつかの欠点があります。

  /// <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 は自動的に閉じられるはずですが、ヘルパーをラップするにはどうすればよいですか? 前もって感謝します。

4

1 に答える 1

2

奇妙なことに、ここでの 1 つのオプションは、オープンな接続を提供しないことです。これはまだ nuget にデプロイされていませんが、github からバージョンを取得すると、必要に応じて接続をより詳細に制御できるようになります。主なメソッド ( Query[<T>]QueryMultipleExecute) のすべてが閉じた接続で正常に機能するようになり、可能な場合は再度閉じます。したがって、代わりに次の場合:

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

GridReaderデータの終わりに達すると、自動的に閉じます。Dispose()メソッドを終了するときに接続しないように再構築したことに注意してください。

于 2012-10-22T13:33:01.643 に答える