5

我们使用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);
}
4

0 回答 0