Код: Выделить всё
public async Task GetAllDynamicAsync(
string sp, DynamicParameters parms, CommandType commandType = CommandType.StoredProcedure)
{
using IDbConnection db = new SqlConnection(Connectionstring);
var rows = await db.QueryAsync(sp, parms, commandType: commandType);
return rows.Select(r => (IDictionary)r).ToList();
}
Хранимая процедура возвращает динамические столбцы (подобные сводной таблице). Набор выходных столбцов зависит от параметров @dStartDate и @dEndDate (он строит столбцы дат на основе диапазона).
Я возвращаю динамический результат и привожу каждую строку к IDictionary, поскольку столбцы различаются.
Размер результата: ~ 8000 строк, ~ 25 столбцов.
Время выполнения SSMS (то же самое) params): ~6 секунд.
Время C# измерено только вокруг этой строки:
Код: Выделить всё
var rows = await db.QueryAsync(sp, parms, commandType: CommandType.StoredProcedure);
Подробнее здесь: https://stackoverflow.com/questions/798 ... an-ssms-sp
Мобильная версия