リポジトリ レイヤーのテストをサポートするために、 DapperWrapperクラスを使用して Dapper IDbConnection インターフェイスを拡張およびラップしています。ただし、Dapper の親/子マッピング サポートを使用して、クエリ内の複数の結果セットを階層オブジェクトにマッピングしようとすると、次の ParentChildIdentityAssociations サンプル テストに示すように、問題が発生しました。
https://github.com/SamSaffron/dapper-dot-net/blob/master/Tests/Tests.cs#L1443
したがって、この機能は Dapper でサポートされていますが、DapperWrapper で IDbExecutor を使用すると、複数の型パラメーターのサポートが失われるようです。次のことをしようとすると、「型パラメーターの数が正しくありません」というコンパイル エラーが発生します。
var results = Db.Query<Deal, DealOption, Deal>(template.RawSql, template.Parameters).FirstOrDefault();
次の DapperWrapper のサンプルは、実際に呼び出すメソッドと、それに含まれる SqlConnection オブジェクト (Dapper で拡張) を示しています。元の SqlConnection/IDbConnection オブジェクトが T で定義された複数の型パラメーターをサポートし、同じ方法で定義されたラッピング メソッドがサポートしない理由はありますか?
public IEnumerable<T> Query<T>(
string sql,
object param = null,
IDbTransaction transaction = null,
bool buffered = true,
int? commandTimeout = default(int?),
CommandType? commandType = default(CommandType?))
{
return _sqlConnection.Query<T>(
sql,
param,
transaction,
buffered,
commandTimeout,
commandType);
}