Entity Framework Core 3 Preview 7 - включает обязательные свойства, используемые в Where

Ранее это работало:

var query = _context.Favourites
                    .Where(o => o.User.UserId == user.UserId);

Теперь мне нужно было включить "Включить" для объекта "Пользователь"

var query = _context.Favourites
                    .Include(o => o.User)
                    .Where(o => o.User.UserId == user.UserId);

Это правильно? Изменилось ли это в Entity Framework Core 3 Preview 7?

Если я не включу его, я получу недружественное исключение.

1 ответ

Entity Framework Core позволяет использовать свойства навигации в модели для загрузки связанных сущностей. Для загрузки связанных данных используются три общих шаблона O/RM.

Активная загрузка означает, что связанные данные загружаются из базы данных как часть начального запроса.

Явная загрузка означает, что связанные данные явно загружаются из базы данных позже.

Ленивая загрузка означает, что связанные данные прозрачно загружаются из базы данных при доступе к свойству навигации.

Когда использовать активную загрузку

  • В "одной стороне" отношений "один ко многим", которые, как вы уверены, используются повсюду с основным объектом. как Пользовательское свойство избранного. Свойство категории продукта.
  • Обычно, когда отношений не слишком много, и активная загрузка будет хорошей практикой для уменьшения количества дополнительных запросов на сервере.

Когда использовать отложенную загрузку

  • Практически со всех сторон "коллекции" отношений "один ко многим". например, избранное пользователя или продукты категории.

  • Вы точно знаете, что недвижимость вам не понадобится сразу.

Примечание: при отложенной загрузке может возникнуть проблема с удалением.

Для получения дополнительных сведений о загрузке связанных данных в EF Core вы можете обратиться к официальной документации.

Другие вопросы по тегам