Ich benutze Entity Framework 4 mit MVC und muss sicherstellen, dass alle referenzierten Entitäten, die ich in meiner Ansicht verwenden möchte geladen wurden, bevor die Controller-Methode zurückgibt, andernfalls spuckt die Ansicht die gefürchteten aus:Entity Framework - Eager Loading verwandte Entitäten
Die ObjectContext-Instanz wurde entfernt und kann nicht mehr für Vorgänge verwendet werden, für die eine Verbindung erforderlich ist.
var sellers = context.Sellers.Include("Recommendations.User").ToList();
aber wenn ich (zum Beispiel) einen Helfer:
Wenn gerade aus dem Kontext der Auswahl, kann ich in der generierten SQL-Abfrage enthielt sie die Include(string)
Methode zu zwingen, verwenden nur Methode, die eine Entität akzeptiert und alle zu ladenden Elemente benötigt, gibt es keine Include
Methode zur Verfügung.
void Test(Seller seller)
{
// ensure all recommendations and their users are loaded
}
Die Brute-Force-Methode ist durch sie Schleife:
foreach (var recommendation in seller.Recommendations)
recommendation.User.ToString(); // just force a load
Wenn ich 100 Empfehlungen haben, diese 101 SQL-Abfragen hinter den Kulissen zu schaffen. Idealerweise möchte ich eine Methode/Methode, die alle Recommendation
AND User
Objekte mit nur einer einzigen Reise nach SQL lädt.
Zeig mir das Geld.
EDIT Ich bin nicht wirklich interessiert zu diskutieren, ob dies eine gute oder schlechte Architektur ist. Ich habe mein Szenario für die Frage vereinfacht. Kannst du das machen, was ich mit der EF API frage?
EDIT 2
Ladislav's edit angeboten Hoffnung auf einen neuen Ansatz, aber es scheint, dass ich es nicht ganz bin.
kann ich erreichen, was ich über diese wollen:
context.Sellers.Include("Recommendations.User").Single(s => s.Id == seller.Id);
Dieser Ansatz nicht LoadProperty
...
context.LoadProperty(seller, "Recommendations.User");
mit funktioniert ... wie es mit dem Fehler fehlschlägt ...
Die angegebene Navigationseigenschaft Recommendations.User konnte nicht gefunden werden.
Keine dieser Methoden funktioniert, wenn Sie keinen Bezug zum Kontext haben.
Während dies Ihre Frage nicht beantwortet (daher poste ich es als Kommentar) - diskutiert es das Laden verwandter Entitäten, wie es derzeit in EF6 funktioniert. Dies ist auch der erste SOF-Link, der in Google auftaucht, wenn er nach "entity framework load related entities" sucht: http://msdn.microsoft.com/en-us/data/jj574232. Also dachte ich, ich würde teilen. –