Как улучшить производительность вызова хранимой процедуры через 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 для уменьшения времени выполнения?


Ответы (0 шт):