/ / Entity Framework - Enthält mehrere Ebenen - c #, asp.net, entity-framework-6

Entity Framework - Einschließen in mehrere Ebenen - c #, asp.net, entity-framework-6

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 № 1

Sie 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)