3番目のライブラリのSqlMapper GridReaderの後に自動的にSqlConnectionを閉じる方法

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つのオプションは以下のようなものです:オープンな接続を与えないでください。これはまだnugetにはデプロイされていませんが、githubからバージョンを取得すると、実際には必要に応じて接続をより詳細に制御できます。すべての主なメソッド( Query[<T>]QueryMultipleExecute )は閉じられた接続でQueryMultipleQueryMultipleば閉じます。だから代わりにあなたは:

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

GridReaderがデータの終わりに達すると自動的に閉じます。メソッドを終了するときにコネクションをDispose()しないように再構造化しました。



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ