Как улучшить производительность вызова хранимой процедуры через Entity Framework в C# API?
Имеется API написанное на C# с использованием Entity Framework в связке с SQL SERVER, так же на стороне SQL SERVER существует несколько процедур, которые я вызываю через Entity Framework из контроллера. Пример одного вызова процедуры:
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 });
Ранее вызовы хранимых процедур выполнялись за ~2 секунды, но теперь они занимают ~20 секунд. В то же время, операции, такие как фильтрация данных, получение по ID и авторизация, выполняются быстро.
Проведя тест без использования Entity Framework в новом консольном приложении, я обнаружил, что процедура выполняется в пределах ожидаемых 2-3 секунд. Однако, замена вызова через Entity Framework на аналогичный код в MVC приводит к той же задержке в ~20 секунд. Кажется, что задержка связана с процессом извлечения данных после вызова процедуры.
Как можно улучшить производительность таких вызовов? Есть ли способы оптимизации или альтернативные методы вызова хранимых процедур через Entity Framework для уменьшения времени выполнения?