Чтобы ответить на ваш вопрос, вам нужно понять основные идеи, лежащие в основе Lazy Loading and Eager loading в EF.
Нетерпеливо Загрузка:
жадная загрузка представляет собой процесс, в котором запрос для одного типа объекта также загружает связанные объекты в качестве части запроса. Желательная загрузка достигается с помощью метода Include. Например, Ваш запрос ниже загрузит пользователя с идентификатором 1 и его профилем.
db.Users.Include(x=>x.User_Profile).Where(z=>z.ID==1).ToList()
Ленивая Загрузка:
Отложенной загрузка представляет собой процесс, посредством которого лицо или совокупность лиц автоматически загружаются из базы данных в первый раз, что свойство со ссылкой на лицо/лица получает доступ. При использовании типов сущностей POCO ленивая загрузка достигается путем создания экземпляров производных прокси-типов, а затем переопределения виртуальных свойств для добавления загрузочного крючка. Например, при использовании класса сущности пользователя, определенного в вашем коде, связанный Профиль/с будет загружен при первом доступе к свойствам доступа Proflie/s.
Отключение отложенной загрузки для конкретных навигационных свойств
- Ленивой загрузки коллекции сообщений может быть выключено, сделав свойство сообщений невиртуальным.
Выключите отложенной загрузки для всех объектов:
public class MyDbContext: DbContext
{
public MyDbContext:()
{
this.Configuration.LazyLoadingEnabled = false;
}
}
Явная загрузка:
Явная загрузка определяется как: когда объекты возвращаются запросом, связанные объекты не являются загружается одновременно. По умолчанию они не загружаются до явного запроса с использованием метода Load в свойствах навигации.
Ресурсы:
https://msdn.microsoft.com/en-us/data/jj574232.aspx
Ленивая загрузка включена? –
Как я могу узнать? – kamalpreet
вы можете проверить его через конфигурацию контекста, например 'Context.Configuration.LazyLoadingEnabled'. Вы можете отключить ленивую загрузку для всех объектов, установив значение в false: 'Context.Configuration.LazyLoadingEnabled = false;' –