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 des Modells und der 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, die überprüft, ob ein Aufruf von Load die richtigen Bedingungen aufweist. Die RelatedEnd.ValidateLoad
-Methode überprüft Folgendes:
- Ein gültiger ObjectContext ist vorhanden.
- Die Entität befindet sich nicht in einem Deleted Zustand.
- MergeOption für Load muss nur sein NoTracking , wenn die Quellentität lautet NoTracking. Wenn die Quellentität mit einem anderen MergeOptionabgerufen wurde, kann esMergeOptionLoadsich nur um eine beliebige NoTracking Entität handeln (z. B. könnte die Entität mit OverwriteChanges geladen worden sein, und die Load Option kann seinAppendOnly).
- Wenn
mergeOption
ist NoTracking, Load wird nicht für eine bereits geladene Entität Load und nicht für eine nicht leere, nicht nachverfolgte RelatedEndEntität aufgerufen.
Wenn Objekte in der Auflistung bereits in geladen ObjectContextwurden, erzwingt die Load -Methode die MergeOption durch den mergeOption
-Parameter angegebene. Weitere Informationen finden Sie unter Identitätsauflösung, Statusverwaltung und Änderungsnachverfolgung.
Um verknüpfte Objekte explizit zu laden, müssen Sie die Load
-Methode auf dem verknüpften 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 auf LoadEntityReference<TEntity>. 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 für EntityReference<TEntity> 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 ist oder nicht IsLoadedtrue
.
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