リポジトリパターンに類似したDapper ORMのユーティリティクラス

c# dapper

質問

Dapper ORMのリポジトリメソッドの下に作成しました。

public SqlMapper.GridReader QueryMultiple(string query, object cmdParams = null, CommandType cmdType = CommandType.Text)
{
     SqlMapper.GridReader objMulti;
     var conn = GetSqlConnection();            
     objMulti = conn.QueryMultiple(query, cmdParams, commandTimeout: 0, commandType: cmdType);                                            
     return objMulti;
}

public IEnumerable<T> GetAll<T>(string query, object cmdParams = null, CommandType cmdType = CommandType.Text) where T : class
{
      IEnumerable<T> objList;
      using (var conn = GetSqlConnection())
      {
           objList = conn.Query<T>(query, param: cmdParams, commandTimeout:0, commandType: cmdType);
           conn.Close();
      }
      return objList;
}

クエリメソッドの使用法はうまく見え、操作が完了するとすぐに接続が閉じられます。

new DapperRepository().Query("zyx").ToList();

しかし、querymultipleはgridreaderを返します。したがって、Dapperは読み取り操作が完了した後に接続と読み取りの両方を処理します。私のアプローチについて助言してください。

using (SqlMapper.GridReader multiResult = new DapperRepository().QueryMultiple(sql, new { id = id }))
{
   var dbPRTGroup = multiResult.Read<Customer>().Single();
    XXXXX
}

受け入れられた回答

はい、そうです。

あなたの最後のコードブロックによれば、接続操作と読み取り操作の両方が最後に配置されます。これはまたの使用によって保証されてusing 、.NET Frameworkでキーワードを。



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