Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Dapper.NET và proc được lưu trữ với nhiều bộ kết quả

QueryMultiple hỗ trợ khả năng đối phó với nhiều tập kết quả. Hạn chế thiết kế duy nhất mà chúng tôi đã thêm là vô hiệu hóa hoàn toàn bộ đệm cho trình đọc lưới. Điều này có nghĩa là toàn bộ API đang phát trực tuyến .

Trong trường hợp đơn giản nhất, bạn có thể sử dụng:

var grid = connection.QueryMultiple("select 1 select 2");
grid.Read<int>().First().IsEqualTo(1);
grid.Read<int>().First().IsEqualTo(2);

Trong trường hợp phức tạp hơn một chút, bạn có thể làm những điều điên rồ như sau:

var p = new DynamicParameters();
p.Add("a", 11);
p.Add("r", dbType: DbType.Int32, direction: ParameterDirection.ReturnValue);

connection.Execute(@"create proc #spEcho
@a int
as 
begin

select @a Id, 'ping' Name, 1 Id, 'pong1' Name
select @a Id, 'ping' Name, 2 Id, 'pong2' Name
return @a
end");

var grid = connection.QueryMultiple("#spEcho", p, 
                                     commandType: CommandType.StoredProcedure);

var result1 = grid.Read<dynamic, dynamic, Tuple<dynamic, dynamic>>(
                  (a, b) => Tuple.Create((object)a, (object)b)).ToList();
var result2 = grid.Read<dynamic, dynamic, Tuple<dynamic, dynamic>>(
                  (a, b) => Tuple.Create((object)a, (object)b)).ToList();

((int)(result1[0].Item1.Id)).IsEqualTo(11);
((int)(result1[0].Item2.Id)).IsEqualTo(1);

((int)(result2[0].Item1.Id)).IsEqualTo(11);
((int)(result2[0].Item2.Id)).IsEqualTo(2);

p.Get<int>("r").IsEqualTo(11);

Bạn sẽ cần thêm điều này bằng câu lệnh để bật QueryMultiple.

using Dapper; /* to add extended method QueryMultiple public static GridReader QueryMultiple(this IDbConnection cnn, string sql, object param = null, IDbTransaction transaction = null, int? commandTimeout = null, CommandType? commandType = null); */


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tập lệnh để loại bỏ tất cả các kết nối đến cơ sở dữ liệu (Hơn RESTRICTED_USER ROLLBACK)

  2. Truy vấn đệ quy trong SQL Server

  3. Kết nối Máy chủ Bastion với Máy chủ PostgreSQL qua Đường hầm SSH

  4. ISJSON () Ví dụ trong SQL Server (T-SQL)

  5. SQL Server tương đương với CHẾ ĐỘ XEM TẠO HOẶC THAY THẾ của Oracle