Карточка Junior EF Core спрашивают часто обновлено

Способы загрузки связанных данных

Вопрос

Какие есть способы загрузить связанные сущности в EF Core?

Попробуйте сами

Ответьте про себя или вслух, потом откройте ответ и сверьтесь.

Показать ответ и разбор

Коротко

- Eager: Include / ThenInclude, связи приходят в том же запросе (или в split-запросах). - Explicit: db.Entry(blog).Collection(b = b.Posts).Load() по требованию. - Lazy: прокси (UseLazyLoadingProxies) и virtual-навигации, загрузка при обращении.

Ответ

  • Eager: Include / ThenInclude, связи приходят в том же запросе (или в split-запросах).
  • Explicit: db.Entry(blog).Collection(b => b.Posts).Load() по требованию.
  • Lazy: прокси (UseLazyLoadingProxies) и virtual-навигации, загрузка при обращении. Грозит N+1.
  • Проекция: Select(b => new { b.Name, Count = b.Posts.Count() }), только нужные поля, лучший вариант для чтения.

Разбор

Ленивая загрузка в EF Core выключена по умолчанию.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.