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