使用 dapper,我可以对存储过程执行批处理,类似于:
connection.Execute(@"
exec sp1 @i = @one, @y = @two
exec sp2 @i = @three",
new { one = 1, two = 2, three = 3 });
但是,到目前为止我所看到的唯一检索数据的方法是使用
results.Read<Type>()
如果结果没有映射到对象怎么办?例如,我正在编写“通用”代码来执行任何具有可变输入/输出参数和结果集的 SP。
谢谢
最佳答案
你想要什么API?如果您可以单独处理网格:这样做:
using(var multi = connection.QueryMultiple(...))
{
while(!multi.IsConsumed) {
// ...
}
}
哪里...
可以访问:
-
Read()
对于dynamic
行 - 注意每一行还实现了IDictionary<string,object>
-
Read<T>
() 通过泛型输入行 -
Read(Type)
对于没有泛型的类型化行 -
Read<DapperRow
>() (实际上,这只是T
,Read<T>()
用于实现Read()
,但可能更方便),它提供了对元数据的更多访问
如果你想下降到一个原始的IDataReader
,这样做:
using(var reader = connection.ExecuteReader(...)) {
// whatever you want
}
关于参数:DynamicParameters
类提供了更丰富的参数控制访问,包括参数方向等。
关于tsql - Dapper QueryMultiple 存储过程 w/o 映射到对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25620620/