Я отлаживаю фрагмент кода, который использует EF в качестве ORM. Теперь я вижу несколько интересное поведение из приложения:
Это код, где я вызываю хранимую процедуру:
List<RequestListEntity> results = new List<RequestListEntity>();
var temp = System.Data.Object.ObjectContext.ExecuteFunction<T>("storedProcedure", param);
foreach (var item in temp)
{
results.Add(item);
}
Замечания:
- Когда я запускаю хранимую процедуру на сервере, она очень быстрая. У него есть соединения с таблицами, но он возвращает 1000 записей в секунду
- Когда я вызываю хранимую процедуру из C #, используя код, показанный выше, она также возвращается через секунду и возвращает
objectResult<T>
с общим количеством записей 1000.
- Теперь, когда я пытаюсь перебрать результат ИЛИ , пытаясь преобразовать результат в список, он чертовски медленнее.
Теперь возникает много вопросов:
- Если он возвращается из БД так быстро, то почему простое преобразование 1000 записей занимает так много времени? Или, может быть, он все еще возвращается в БД для конвертации?
- Могу ли я что-нибудь сделать, чтобы сделать это быстро? Когда он вызывает функцию, он возвращается очень быстро.