Entity Framework 5: Lazy Loading oder Eager Loading verwenden

Es tut mir leid, wenn meine Frage normal ist. Dieses Problem tritt jedoch auf, wenn ich meine ASP.NET MVC 4.0-Anwendung mit Entity Framework 5 entwerfe.

Wenn ich Eager Loading wähle, vereinfache ich nur mit:

public Problem getProblemById(int id) {
 using(DBEntity ctx = new DBEntity ())
            {
                return (Problem) ctx.Posts.Find(id);
            }
}

Aber wenn ich Eager Loading benutze, werde ich auf das Problem stoßen: Wenn ich durch alle seine Attribute wie Kommentare (des Problems), Benutzer (des Problems) navigieren möchte ... muss ich manuell verwendenInclude diese Eigenschaften einzuschließen. Wenn ich diese Eigenschaften manchmal nicht verwende, geht die Leistung verloren, und möglicherweise geht die Stärke von Entity Framework verloren.

Wenn ich Lazy Loading benutze. Es gibt zwei MöglichkeitenDBContext Objekt. Der erste Weg ist die lokale Verwendung des DBContext-Objekts:

public Problem getProblemById(int id) {
 DBEntity ctx = new DBEntity ();
 return (Problem) ctx.Posts.Find(id);
}

Ich denke, dass dies zu einem Speicherleck führen wird, da ctx nie wieder verfügbar sein wird.

Die zweite Möglichkeit besteht darin, das DBContext-Objekt statisch zu machen und global zu verwenden:

static DBEntity ctx = new DBEntity ();
public Problem getProblemById(int id) {
 return (Problem) ctx.Posts.Find(id);
}

Ich habe in einem Blog gelesen, dass ich auf diese Weise den Parallelzugriff (da mehrere Anforderungen an den Server gesendet werden) von mir selbst steuern muss, OMG. Zum Beispiel dieser Link:

Entity Framework DBContext-Verwendung

Wie kann ich meine App gestalten? Bitte helfen Sie mir dabei.

Vielen Dank :)

Antworten auf die Frage(1)

Ihre Antwort auf die Frage