Wenn ich 3 Klassen A, B und C habe:
class A {
public B b { get; set; }
public C c { get; set; }
}
class B {
public C c { get; set; }
}
class C {
...
}
Wenn ich eine Anfrage stelle wie:
Context.A.Where(...).Include(x => x.b).Include(x => x.c);
Die Entität lädt das C-Objekt in A und B, wobei Daten dupliziert werden. Gibt es eine Möglichkeit, dies zu verhindern? Ich benutze kein Lazy Loading.
Antworten:
1 für die Antwort № 1Sie weisen Entity Framework an, das zu laden b und c Entitäten mit der EIN einstellen. Seit der b Elemente enthalten Verweise auf Elemente des Typs C Das Macht Tatsächlich sind die gleichen Gegenstände mit der ein Objekte, dann verwendet Entity Framework diese zum Erstellen des Objektdiagramms. Das bedeutet nicht, dass Entity Framework einen zusätzlichen SQL-Join zum Laden von c Artikel für den B-Typ. Dazu schreiben Sie
Context.A.Where(...).Include(x=>x.b).Include(x=>x.c).Include(x=>x.b.c)