Карточка 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 ошибок.