3

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

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

但是,到目前为止,我所看到的检索数据的唯一方法是使用

results.Read<Type>()

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

谢谢

4

1 回答 1

3

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

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

在哪里...可以访问:

  • Read()对于dynamic行 - 注意每一行也实现IDictionary<string,object>
  • Read<T>() 用于通过泛型输入的行
  • Read(Type)对于没有泛型的类型化行
  • Read<DapperRow>() (实际上,这只是用来实现的TRead<T>()Read()可能更方便),它提供了对元数据的更多访问

如果你想下降到 raw IDataReader,这样做:

using(var reader = connection.ExecuteReader(...)) {
    // whatever you want
}

关于参数:DynamicParameters该类提供了对参数控制的更丰富的访问,包括参数方向等。

于 2014-09-02T10:11:41.800 回答