Я безуспешно искал (или не знал, как правильно его искать), поэтому я прихожу к вам.
Проверьте эти тестовые классы:
public class A {
int Id;
ICollection<B> Bs;
}
public class B {
int Id;
int AId;
ICollection<C> Cs;
}
public class C {
int Id;
int BId;
ICollection<D> D;
}
public class D {
int Id;
int CId;
bool Show;
}
Что я 'я пытаюсь сделать, это использовать нетерпеливая загрузка , чтобы получить все эти классы за 1 вызов (убедившись, что БД вызывается только один раз).
Ниже приведен фактический TSQL
Я хочу преобразоватьк LINQ Method
синтаксису (я думаю, что правильный язык), а не LINQ Query
синтаксис.
SELECT *
FROM A
LEFT JOIN B ON B.AId = A.Id
LEFT JOIN C ON C.BId = B.Id
LEFT JOIN D ON D.CId = C.Id
WHERE A.Id = 1
Вот что я получил до сих пор
var x = db.A
.Include(a => a.B)
.Include(a => a.Bs.Select(b => b.C)
// How do I get D?
.FirstOrDefault(a => a.Id == 1);
Пока я нене думаю, что это важно, я хотел бы отметить, на всякий случай, что в конце мне нужно сделать некоторые вещи с A
, а позже мне нужно будет получить все D
'с Show == true
.