tsql - Dapper QueryMultiple 存储过程 w/o 映射到对象

标签 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。

谢谢

最佳答案

你想要什么API?如果您可以单独处理网格:这样做:

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

哪里...可以访问:

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

如果你想下降到一个原始的IDataReader ,这样做:

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

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

关于tsql - Dapper QueryMultiple 存储过程 w/o 映射到对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25620620/

相关文章:

c# - 多次调用 con.execute() 是否重要?

asp.net - 在创建 ASP.NET Web 应用程序时将数据库从 SQL Server 更改为 PostgreSQL?

c# - Dapper .net 多次查询 'The reader has been disposed' 错误

c# - 如何使用 Dapper.net 扩展忽略类属性?

sql - T-SQL 错误 : "The multi-part identifier X.Y could not be bound"

SQL,关于join的问题

sql - 在 MS SQL Server Management Studio 中处理事务的最佳方式

sql-server - 游标循环内的表变量

c# - 查询结果超过1000条时Dapper抛出System.Data.SqlClient.SqlException

dapper - 忽略模型属性上的属性