を使用しています。 .Include()
wie viele andere vorgeschlagen haben, ist ein guter Weg, um das zu erreichen, was Sie brauchen.
Allerdings kann es vorkommen, dass Sie später etwas "nachladen" müssen, das Sie nicht "inkludiert" haben oder das Sie nur gelegentlich benötigen, so dass das Einfügen einer Include-Anweisung in vielen Fällen eine Verschwendung von Rechenzyklen darstellt.
Im Falle einer singulären Beziehung wie "Product.Category" (wobei Product.Category Ihre Navigationseigenschaft vom Produkt zur Kategorie ist), haben Sie höchstwahrscheinlich auch ein "Product.CategoryReference"-Element. Sie können prüfen, ob es geladen ist oder nicht, und wenn nicht, können Sie es "bei Bedarf" laden:
if(!Product.CategoryReference.IsLoaded)
{
Product.CategoryReference.Load();
}
Jetzt sollte Ihre referenzierte "Kategorie" im Speicher sein und bereit zur Verwendung.
Wenn Sie eine Navigationseigenschaft haben, die auf eine Sammlung von Dingen verweist (z. B. "Teile" für ein Produkt), können Sie dasselbe tun, direkt auf der Navigationseigenschaft:
if(!Product.Parts.IsLoaded)
{
Product.Parts.Load();
}
Das kann eine nützliche Technik sein, um einzelne oder sammlungsartige Navigationseigenschaften "bei Bedarf" zu laden, wenn Sie sie nicht in Ihre EF-Abfrage "einbezogen" haben.
Marc
0 Stimmen
Hier ist ein Beispiel dafür, wie ich die Daten lade: Vielleicht sollte ich erwähnt haben, dass ich dies für eine Silverlight-Anwendung kodieren. Und dies ist durch einen Domainservice. RTIPricingContext _context = new RTIPricingContext(); LoadOperation<PurchaseOrder> op = _context.Load(context.GetPurchaseOrderQuery(), PurchaseOrdersLoadedCallback, null); private void PurchaseOrdersLoadedCallback(LoadOperation<PurchaseOrder> lo) { IEnumerable<PurchaseOrder> po = lo. Entities.Where(w => w.UserID == SelectedUser.ID); // Dies ist die Auflistung, die ich brauche, um die Unterklassen zu füllen.