Dapper QueryMultiple存储过程没有映射到对象

时间:2014-09-02 09:55:22

标签: tsql dapper dapper-extensions

使用dapper,我可以为存储过程执行批量执行,类似于:

connection.Execute(@"
  exec sp1 @i = @one, @y = @two 
  exec sp2 @i = @three",
  new { one = 1, two = 2, three = 3 });

然而,到目前为止,检索数据的唯一方法是使用

results.Read<Type>()

如果结果没有映射到对象怎么办?例如,我正在编写“通用”代码来执行任何带有变量输入/输出参数的SP&amp;结果集。

由于

1 个答案:

答案 0 :(得分:2)

你想要什么API?如果您可以单独处理网格:执行以下操作:

using(var multi = connection.QueryMultiple(...))
{
    while(!multi.IsConsumed) {
        // ...
    }
}

...有权访问:

    {li> Read()代表dynamic行 - 注意每行也实现了IDictionary<string,object>
  • Read<T>()用于通过泛型
  • 输入的行
  • Read(Type)表示没有通用的输入行
  • Read<DapperRow&gt;()(实际上,这只是T用于实现Read<T>()的{​​{1}},但可能更方便),它提供了更多的访问权限到元数据

如果您想要放弃原始Read(),请执行以下操作:

IDataReader

关于参数:using(var reader = connection.ExecuteReader(...)) { // whatever you want } 类提供了更丰富的参数控制访问,包括参数方向等。