Metoda Include() działa całkiem dobrze w przypadku list obiektów. Ale co, jeśli muszę przejść dwa poziomy głębokości? Na przykład poniższa metoda spowoduje zwrócenie ApplicationServers z pokazanymi tutaj właściwościami. Jednak ApplicationsWithOverrideGroup to inny kontener zawierający inne złożone obiekty. Czy mogę wykonać również funkcję Include() dla tej właściwości? Lub jak mogę załadować tę właściwość do pełnego załadowania?Struktura obiektu - zawiera wiele poziomów właściwości
Jak to stoi teraz ta metoda:
public IEnumerable<ApplicationServer> GetAll()
{
return this.Database.ApplicationServers
.Include(x => x.ApplicationsWithOverrideGroup)
.Include(x => x.ApplicationWithGroupToForceInstallList)
.Include(x => x.CustomVariableGroups)
.ToList();
}
propaguje tylko właściwość enabled (poniżej), a nie aplikacji lub właściwości CustomVariableGroup (poniżej). Jak mogę to zrobić?
public class ApplicationWithOverrideVariableGroup : EntityBase
{
public bool Enabled { get; set; }
public Application Application { get; set; }
public CustomVariableGroup CustomVariableGroup { get; set; }
}
Witam, Dlaczego otrzymuję wyjątek "Wyrażenie musi być wyrażeniem członka", gdy próbuję tego: Aby dołączyć kolekcję, a następnie kolekcję o jeden poziom niżej: 'query.Include (e => e.Level1Collection.Select (l1) => l1.Level2Collection)) '. –
@BobHorn, Mam ten sam problem .. W moim przypadku zagnieżdżenie przechodzi w głąb wielu warstw, udało mi się zrobić to, co wskazałeś. W wygenerowanym SQL, mogłem zobaczyć, że wszystkie kolumny wracają z różnymi nazwami aliasów jak c1, c2 coś takiego. Moje pytanie brzmi: w jaki sposób mogę utworzyć zagnieżdżoną kolekcję DTO spośród wszystkich moich obejmuje :(.. Być może możesz wziąć powyższy przykład sam, ponieważ zwracamy wszystkie kolumny bez niestandardowego DTO (który sam jest zbiorem DTO's) – TechQuery