小巧玲珑QueryMultiple存储过程W/O映射到对象
问题描述:
凭借短小精悍,我可以做批处理执行存储过程,类似于:小巧玲珑QueryMultiple存储过程W/O映射到对象
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
类提供给参数控制更加丰富的机会,包括参数方向等
所以每.Read()返回单个网格结果,因为“exec”的顺序已发送,对吗?此外,当您说.ExecuteReader时,这是由Dapper提供的扩展方法,它提供原始访问,类似于ADO.NET中的DataReader?最后,一个问题DP可以同时用于QueryMultiple和ExecuteReader?顺便说一下,我在Dapper上观看了Pluralsight的视频,看起来非常好。 – Bill 2014-09-02 12:21:26
“是”(实际上,它是按照执行的“select”顺序进行的 - 它看不到任何其他内容),“是”和“是” – 2014-09-02 12:30:50
还有一个问题,如果我是使用QueryMultiple和DynamicParameters,我可以将sql作为多个存储过程调用传递,并用“;”分隔,然后为所有SP提供一个包含所有参数的DynamicParameter对象?谢谢 – Bill 2014-09-13 06:52:45