При запросе большой таблицы, в которой вам нужно получить доступ к свойствам навигации в дальнейшем в коде (я явно не хочу использовать ленивую загрузку), что будет работать лучше .Include()
или .Load()
? Или зачем использовать один над другим?.Include() vs .Load() производительность в EntityFramework
В этом примере включенные таблицы содержат всего около 10 записей, а сотрудники имеют около 200 записей, и может случиться так, что большинство из них будут загружены в любом случае с включением, потому что они соответствуют предложению where.
Context.Measurements.Include(m => m.Product)
.Include(m => m.ProductVersion)
.Include(m => m.Line)
.Include(m => m.MeasureEmployee)
.Include(m => m.MeasurementType)
.Where(m => m.MeasurementTime >= DateTime.Now.AddDays(-1))
.ToList();
или
Context.Products.Load();
Context.ProductVersions.Load();
Context.Lines.Load();
Context.Employees.Load();
Context.MeasurementType.Load();
Context.Measurements.Where(m => m.MeasurementTime >= DateTime.Now.AddDays(-1))
.ToList();
+1 для учета сетевого подключения (_If это удаленный SQL Server_). Часто это важно. – ken2k
+1 - попробуйте оба. в моем случае использования 'Include()' заняло 7 минут, 'Load()' заняло 1,9 секунды и использовало меньше оперативной памяти. Я добавил 'LazyLoadingEnabled = false;' –