Ich habe ein Problem festgestellt: Ich habe eine Tabelle, die einen Verweis auf eine andere Tabelle, die eine Liste der Verweise auf eine andere Tabelle, die eine andere Liste von Referenzen und I hat will das alles eifrig laden.Entity Framework Eager Laden Entität Liste in Entitätsliste
Grundsätzlich ist die Idee:
public class User {
public ClassL1 l1 { get; set; }
}
ClassL1 {
public List<ClassL2> l2 { get; set; }
}
ClassL2 {
public List<ClassL3> l3 { get; set; }
}
ClassL3 {
//some basic string or int values
}
Und zur Zeit, ich versuche es mit so etwas zu laden, aber ohne Erfolg:
user = context.Users
.Where(u => u.UserName == model.Username)
.Include(u => u.l1)
.ThenInclude(l1 => l1.l2)
.ThenInclude(l2List => l2List.Select(l2Single => l2Single.l3))//This doesn't work
//.Include(u => u.l1.l2.Select(l2Single => l2Single.l3)) //Neither does this
.First();
Wie ich laden bin soll eine Liste von Listen, wenn die Auswahl nicht funktioniert? Jede Hilfe wäre willkommen.
EDIT: Nun, da es anscheinend ein offener Bug auf das ist, ich mit einem dummen fix ging, und machte es wie folgt funktionieren:
user = context.Users
.Where(u => u.UserName == model.Username)
.Include(u => u.l1)
.ThenInclude(l1 => l1.l2)
.First();
for (int i = 0; i < user.l1.l2.Count; i++)
{
user.l1.l2[i].l3 = context.l3DB
.Where(p => p.l2.Id == user.l1.l2[i].Id)
.ToList();
}
Und für diese zu arbeiten, habe ich Verweise auf (zu den Eltern) in den Klassen. zum Beispiel:
public class ClassL2 {
public List<ClassL3> l3 { get; set; }
public ClassL1 l1 { get; set; }//reference to parent
}
Scheint nicht zu funktionieren. Ich erhalte einen Fehler: "Kein Zwangsoperator ist zwischen Typen 'Microsoft.Data.Entity.Query.Internal.EntityQueryable'1 [ClassL3]' und 'System.Collections.Generic.List'1 [ClassL3]' definiert." –
Vielleicht ist dies ein Problem mit Ihren Zuordnungen. Welche Version von EF verwenden Sie? –
"EntityFramework.Commands": "7.0.0-rc1-final" "EntityFramework.Core": "7.0.0-rc1-final" Ich dachte es auch, aber ich kann keinen Weg finden, es zu beheben , hatte eine Prop namens das gleiche wie es ist Klassenname, änderte das, aber der Fehler blieb. Ich könnte die Code-Schnipsel zu diesem Problem hochladen, wenn das hilfreich wäre. –