#entity-framework #linq #entity-framework-core #master-detail
#entity-framework #linq #entity-framework-core #основные сведения
Вопрос:
Я видел много сообщений, показывающих, как выполнить запрос в Entity Framework для получения основных данных, например:
IQueryable<myobj> foo = _context.Foos.Include(x => x.FooDetails).Where(x => x.Id == fooId);
Но я должен справиться с более сложным случаем. Основные сведения, где каждая деталь имеет свои собственные детали.
Что-то вроде:
Foo —> FooDetails —> FooDetailsInfo
Возможно ли это? Если да, то как? Конечно, тупое решение существует, и оно использует цикл. Есть ли более разумный способ достичь этой цели?
Я попытался отредактировать код строки
IQueryable<myobj> foo = _context.Foos.Include(x => x.FooDetails).Where(x => x.Id == fooId);
но я не написал ничего полезного.
Комментарии:
1. какова цель вашего запроса? Какой набор полей вам нужен, я спрашиваю об этом, потому что он вернет все поля — что вам нужно, а что вам вообще не нужно. Это плохо сказывается на производительности и сетевом трафике. Может быть, вам нужен лучший запрос?
Ответ №1:
Да, это возможно. После Include
того, как вы можете вызвать ThenInclude
var foo = _context.Foos
.Include(x => x.FooDetails)
.ThenInclude(fd => fd.FooDetailsInfo)
.Where(x => x.Id == fooId);