Entity Framework 3.5 - Wie werden Kinder geladen?

.net-3.5 entity-framework linq

Frage

Meine Fragen sind wahrscheinlich sehr einfach, wie man Kinder / Unterklassen lädt. Es gibt keine "Last" oder ähnliches, die ich finden kann, um den Kontext mit den Kindern zu laden.

Die Kontextklasse ist vom Typ ObjectContext, siehe unten:

public partial class RTIPricingEntities : global::System.Data.Objects.ObjectContext

Produkt

Product.ModifiedByUser (Wie lädt man diese Klasse beim Laden des Produkts?)

Product.Category (Wie werden die Kategorien geladen, wenn das Produkt geladen wird?)

Beliebte Antwort

Sie können eifrig laden:

var q = from p in Context.Products
                  .Include("ModifiedByUser")
                  .Include("Category")
        select p;

... oder Projekt:

var q = from p in Context.Products
        select new 
        {
           Id = p.Id,
           Name = p.Name
           ModifiedByUserName = p.ModifiedByUser.Name,
           CategoryName = p.Category.Name
        }

Der Vorteil der Projektion ist, dass Sie nur die Daten erhalten, die Sie benötigen, und nicht die gesamte referenzierte Entität. Der Vorteil des eifrigen Ladens besteht darin, dass zurückgegebene Entitäten die Nachverfolgung von Änderungen durchführen. Wählen Sie die richtige Technik für das anstehende Problem.

Aktualisieren

Ja, es ist wichtig zu erwähnen, dass Sie RIA-Dienste verwenden. Ich nehme an, Sie arbeiten auch im Client. Das macht die Dinge völlig anders.

Bei den RIA-Services ist es sehr wichtig, dass Sie das gesamte Diagramm der Entitäten zurückgeben, die Sie beim ersten Laden benötigen. Sie möchten nichts wie .Load () für eine Entität aufrufen, da dies ein weiterer heißer Punkt auf dem Server wäre, was die Leistung beeinträchtigt. Wenn Sie sich beispielsweise in einem Silverlight-Client befinden und vom Server eine Liste von Instanzen anfordern und die zugehörigen Eigenschaften noch nicht verwirklicht sind, ist es bereits zu spät. Include funktioniert auch nicht in einem Silverlight-Client. Daher verfügen die RIA-Services über serverseitige Tools, mit denen Sie sicherstellen können, dass Sie anfangs das korrekte, vollständig materialisierte Objektdiagramm zurückgeben.

Sie müssen stattdessen IncludeAttribute in Ihrem RIA Services-Server verwenden. Sie können eine "Buddy" -Metadatenklasse erstellen, um Ihr Entitätsmodell mit [Include] zu dekorieren. Beispiele finden Sie im RIA Services-Übersichtsdokument, Abschnitt 4.8 .



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum