EntityCollection<TEntity>.Load(MergeOption) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Načte související objekty do kolekce pomocí zadané možnosti sloučení.
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)
Parametry
- mergeOption
- MergeOption
Určuje, jak mají být objekty v této kolekci sloučeny s objekty, které mohly být vráceny z předchozích dotazů proti stejnému ObjectContextobjektu .
Příklady
Tento příklad je založen na prodejním modelu Adventure Works. Chcete-li spustit kód v tomto příkladu, musíte již přidat AdventureWorks Sales Model do projektu a nakonfigurovat projekt tak, aby používal Entity Framework. Provedete to tak, že dokončíte postupy v části Postupy: Ruční konfigurace projektu Entity Framework a Postupy: Ruční definování souborů modelu a mapování.
Tento příklad načte související SalesOrderHeader
objekty pro entitu Contact
.
// 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()));
}
}
}
Poznámky
Tato metoda volá interní RelatedEnd.ValidateLoad
metodu před načtením kolekce, která ověří, že volání má Load správné podmínky. Metoda RelatedEnd.ValidateLoad
zkontroluje, že:
- Existuje platný ObjectContext .
- Entita není ve Deleted stavu.
- MergeOption pro Load musí být NoTracking pouze v případě, že zdrojová entita byla NoTracking. Pokud byla zdrojová entita načtena s jakoukoli jinou entitou , může být cokoli NoTracking jiného než (například entita mohla být načtena OverwriteChanges a Load možnost může být AppendOnly).LoadMergeOptionMergeOption
- Pokud
mergeOption
je NoTracking, Load není volána u již načtené entity a Load není volána u neprázdné, nesledované RelatedEnd.
Pokud jsou objekty v kolekci již načteny do objektu ObjectContextLoad , metoda vynucuje MergeOption hodnotu určenou parametrem mergeOption
. Další informace najdete v tématech Řešení identit, Správa stavu a Sledování změn.
Chcete-li explicitně načíst související objekty, musíte volat metodu Load
na souvisejícím konci vrácenou navigační vlastností. Pro relaci 1:N zavolejte metodu na LoadEntityCollection<TEntity>. Pro relaci 1:1 zavolejte Load na EntityReference<TEntity>. Tím se data souvisejícího objektu načte do kontextu objektu. Můžete vytvořit výčet prostřednictvím kolekce vrácených výsledků pomocí foreach
smyčky (For Each...Next
v jazyce Visual Basic) a podmíněně volat metodu Load
EntityReference<TEntity> a EntityCollection<TEntity> vlastnosti pro každou entitu ve výsledcích.
Metoda Load načte související objekty ze zdroje dat bez ohledu na to, zda je true
nebo není IsLoaded .
Poznámka
Když voláte metodu Load během výčtu foreach
(C#) nebo For Each
(Visual Basic), Object Services se pokusí otevřít novou čtečku dat. Tato operace selže, pokud jste nepovolili více aktivních sad výsledků zadáním multipleactiveresultsets=true
v připojovacím řetězci. Výsledek dotazu můžete také načíst do List<T> kolekce. Tím zavřete čtečku dat a umožníte vytvořit výčet nad kolekcí a načíst odkazované objekty.
Metoda EntityCollection<TEntity>.Load je synchronizována s metodou EntityReference<TEntity>.Load .
Platí pro
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro