Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Dapper.NET и съхранена процедура с множество набори от резултати

QueryMultiple поддържа възможността за работа с множество набори от резултати. Единственото ограничение на дизайна, което добавихме, беше пълното деактивиране на буферирането за четеца на мрежа. Това означава, че целият API е поточно предаване .

В най-простия случай можете да използвате:

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

В малко по-сложния случай можете да правите луди неща като това:

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);

Ще трябва да добавите този оператор using, за да активирате 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. Какво представлява двоен в sql сървър?

  2. Функция IndexOf в T-SQL

  3. Изпращане на имейл от тригер в SQL Server (T-SQL)

  4. Модел на регулярни изрази във функцията за замяна на SQL?

  5. Разберете дали даден обект е външен ключ с OBJECTPROPERTY() в SQL Server