Вот пример вызова одной процедуры:
Код: Выделить всё
var result = context.MyProcedure.FromSqlRaw(
"EXECUTE [MyDB].[dbo].[MyProcedure] @Param1, @Param2, @Param3, @Param4",
new SqlParameter("@Param1", param1),
new SqlParameter("@Param2", param2),
new SqlParameter("@Param3", param3),
new SqlParameter("@Param4", param4 == "all" ? DBNull.Value : param4)
).ToList();
return Ok(new { result });
Проведя тест без использования Entity Framework в новом консольном приложении, я обнаружил, что процедура выполняется в течение ожидаемых 2-3 секунд. Однако замена вызова через Entity Framework аналогичным кодом в ASP.NET MVC приводит к той же задержке ~20 секунд. Судя по всему, задержка связана с процессом выборки данных после вызова процедуры.
Как можно повысить производительность таких вызовов? Существуют ли способы оптимизации или альтернативные методы вызова хранимых процедур через Entity Framework для сокращения времени выполнения?
Как описано выше, я попробовал запустить процедуру из той же базы данных через пустое консольное приложение без Entity Framework, и это сработало очень быстро.
Подробнее здесь: https://stackoverflow.com/questions/781 ... y-framewor