EntityCollection<TEntity>.Load(MergeOption) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Lädt verbundene Objekte mit der angegebenen Mergeoption in die Auflistung.
public:
override void Load(System::Data::Objects::MergeOption mergeOption);
public override void Load (System.Data.Objects.MergeOption mergeOption);
override this.Load : System.Data.Objects.MergeOption -> unit
Public Overrides Sub Load (mergeOption As MergeOption)
Parameter
- mergeOption
- MergeOption
Gibt an, wie die Objekte in dieser Auflistung mit Objekten zusammengeführt werden sollen, die möglicherweise von vorherigen Abfragen für denselben ObjectContext zurückgegeben wurden.
Beispiele
Dieses Beispiel beruht auf dem AdventureWorks Sales-Modell. Zum Ausführen des Codes in diesem Beispiel müssen Sie dem Projekt bereits das AdventureWorks Sales-Modell hinzugefügt und das Projekt zur Verwendung des Entity Framework konfiguriert haben. Führen Sie hierzu die Verfahren unter Vorgehensweise: Manuelles Konfigurieren eines Entity Framework-Projekts und Vorgehensweise: Manuelles Definieren der Modell- und Zuordnungsdateien aus.
In diesem Beispiel werden die verbundenen SalesOrderHeader
-Objekte für die Contact
-Entität geladen.
// Specify the customer ID.
int contactID = 4332;
using (AdventureWorksEntities context =
new AdventureWorksEntities())
{
context.ContextOptions.LazyLoadingEnabled = false;
// Get a specified customer by contact ID.
var contact =
(from c in context.Contacts
where c.ContactID == contactID
select c).First();
// Load the orders for the customer explicitly.
if (!contact.SalesOrderHeaders.IsLoaded)
{
contact.SalesOrderHeaders.Load();
}
foreach (SalesOrderHeader order in contact.SalesOrderHeaders)
{
// Load the items for the order if not already loaded.
if (!order.SalesOrderDetails.IsLoaded)
{
order.SalesOrderDetails.Load();
}
Console.WriteLine(String.Format("PO Number: {0}",
order.PurchaseOrderNumber));
Console.WriteLine(String.Format("Order Date: {0}",
order.OrderDate.ToString()));
Console.WriteLine("Order items:");
foreach (SalesOrderDetail item in order.SalesOrderDetails)
{
Console.WriteLine(String.Format("Product: {0} "
+ "Quantity: {1}", item.ProductID.ToString(),
item.OrderQty.ToString()));
}
}
}
Hinweise
Diese Methode ruft vor dem Laden der Auflistung die interne RelatedEnd.ValidateLoad
Methode auf, wodurch überprüft wird, ob ein Aufruf von Load die richtigen Bedingungen aufweist. Die RelatedEnd.ValidateLoad
-Methode überprüft Folgendes:
- Ein gültiges ObjectContext ist vorhanden.
- Die Entität befindet sich nicht in einem Deleted Zustand.
- MergeOption for Load muss wenn und nur sein NoTracking , wenn die Quellentität lautet NoTracking. Wenn die Quellentität mit einer anderen MergeOptionabgerufen wurde, kann es LoadMergeOption sich um einen beliebigen Wert handeln, außer NoTracking (z. B. hätte die Entität mit OverwriteChanges geladen werden können, und die Load Option kann sein AppendOnly).
- Wenn
mergeOption
ist NoTracking, Load wird nicht für eine bereits geladene Entität aufgerufen und Load nicht für eine nicht leere, nicht nachverfolgte RelatedEndEntität aufgerufen.
Wenn Objekte in der Auflistung bereits in das ObjectContextgeladen werden, erzwingt die Load -Methode das MergeOption durch den mergeOption
-Parameter angegebene. Weitere Informationen finden Sie unter Identitätsauflösung, Statusverwaltung und Änderungsnachverfolgung.
Um verwandte Objekte explizit zu laden, müssen Sie die Load
-Methode am zugehörigen Ende aufrufen, das von der Navigationseigenschaft zurückgegeben wird. Rufen Sie für eine 1:n-Beziehung die Load -Methode für auf EntityCollection<TEntity>. Rufen Sie für eine 1:1-Beziehung die Load auf auf EntityReference<TEntity>auf. Dadurch werden die Daten der verbundenen Objekte in den Objektkontext geladen. Sie können die Auflistung der zurückgegebenen Ergebnisse mithilfe einer foreach
Schleife (For Each...Next
in Visual Basic) auflisten und die -Methode EntityReference<TEntity> für und EntityCollection<TEntity> die Load
Eigenschaften für jede Entität in den Ergebnissen bedingt aufrufen.
Die Load -Methode lädt verwandte Objekte aus der Datenquelle, unabhängig davon, ob es sich um true
handelt oder nichtIsLoaded.
Hinweis
Beim Aufruf der Load-Methode in einer foreach
(C#)- oder For Each
(Visual Basic)-Enumeration wird von Object Services ein neuer Datenleser geöffnet. Diese Operation schlägt fehl, es sei denn, es wurde "Multiple Active Result Sets" aktiviert, indem in der Verbindungszeichenfolge multipleactiveresultsets=true
angegeben wurde. Das Ergebnis der Abfrage kann auch in eine List<T>-Auflistung geladen werden. Dadurch wird der Datenreader geschlossen, und die Auflistung kann durchlaufen werden, um Objekte, auf die verwiesen wird, zu laden.
Die EntityCollection<TEntity>.Load-Methode wird mit der EntityReference<TEntity>.Load-Methode synchronisiert.
Gilt für:
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für