Код: Выделить всё
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();
}
Хранимая процедура SQL Server возвращает динамические столбцы (подобные сводной таблице). Набор выходных столбцов зависит от параметров @dStartDate и @dEndDate (столбцы дат создаются на основе диапазона).
Я возвращаю динамический результат и привожу каждую строку к IDictionary, поскольку столбцы различаются.
Размер результата: ~8000 строк, ~25 столбцов.
Время выполнения SSMS (те же параметры): ~6 с.
Время C# измеряется только вокруг этой строки:
var rows = await db.QueryAsync(sp, parms, CommandType: CommandType.StoredProcedure);
и оно постоянно составляет ~17–19 с.>
Подробнее здесь: https://stackoverflow.com/questions/798 ... an-ssms-sp
Мобильная версия