Я использую Entity Framework 6 для получения объекта, который имеет несколько свойств навигации для глубоко вложенных объектов. Я столкнулся с огромным влиянием производительности, которое было увеличено путем регистрации запросов Entity Framework. У меня есть сто записей в моей самой глубокой сущности (Geocoordinate) и загрузка объекта Session занимает до 8 секунд (я хотел бы менее 1 секунды).Медленная производительность, получающая множество вложенных объектов с использованием Entity Framework
Вот Сущность образец журнала: https://gist.github.com/bbougot/837419c682a75d4741a5
Вот мой код:
using (var context = new ModelContainer())
{
context.Database.Log = msg => Trace.WriteLine(msg);
var session= await
context.SessionSet.FirstOrDefaultAsync(a => a.Identifier == sessionIdentifier);
var result = await Json(session).ExecuteAsync(new CancellationToken());
return ResponseMessage(result);
}
Я извлекая красные сущности моей модели (обратите внимание только один-ко-многим между Маршрут и GeoPosition):
(Ссылка на большой размер изображения: http://i.imgur.com/adRw6br.jpg?1)
Я попытался отключить ленивую загрузку и использование Включить, чтобы загружать мои объекты, но это еще хуже, я достиг таймаута SQL Server.
Вы уверены, что это проблема с EF? Я имею в виду, если вы запускаете аналогичный запрос TSQL, работает ли он быстрее? – Rahul
нет, это примерно то же самое ... Я думаю, что моя модель не оптимизирована. Я упрощу некоторые отношения, тогда производительность должна быть лучше. – Ben