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 způsob sloučení objektů v této kolekci s objekty, které mohly být vráceny z předchozích dotazů proti stejné ObjectContext.
Příklady
Tento příklad je založený na prodejním modelu Adventure Works. Pokud chcete kód spustit v tomto příkladu, musíte už do projektu přidat model AdventureWorks Sales Model a nakonfigurovat ho tak, aby používal Entity Framework. Provedete to tak, že dokončíte postupy v
Tento příklad načte související SalesOrderHeader objekty entity 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í Load má správné podmínky. Metoda RelatedEnd.ValidateLoad zkontroluje, že:
- Existuje platný ObjectContext .
- Entita není ve Deleted stavu.
- MergeOption musí Load být NoTracking v případě, že zdrojová entita byla a pouze v případě, že zdrojová entita byla NoTracking. Pokud byla zdrojová entita načtena s jakoukoli jinou MergeOptionentitou, LoadMergeOption může to být cokoli, ale NoTracking (například entita mohla být načtena OverwriteChanges a Load možnost může být AppendOnly).
- Pokud
mergeOptionje NoTracking, Load není volána u již načtené entity a Load není volána na neprázdné, nesledované RelatedEnd.
Pokud jsou objekty v kolekci již načteny do ObjectContext, Load metoda vynucuje MergeOption určené parametrem mergeOption . Další informace najdete v tématu Řešení identit, správa stavu a sledování změn.
Chcete-li explicitně načíst související objekty, je nutné volat Load metodu na souvisejícím konci vrácenou navigační vlastností. Pro relaci 1:N zavolejte metodu Load .EntityCollection<TEntity> U relace 1:1 zavolejte na LoadEntityReference<TEntity> Tím se načte související data objektu do kontextu objektu. Výčet vrácených výsledků můžete provést pomocí smyčky foreach (For Each...Next v Visual Basic) a podmíněně volat metodu Load na EntityReference<TEntity> a EntityCollection<TEntity> pro každou entitu ve výsledcích.
Metoda Load načte související objekty ze zdroje dat bez ohledu na IsLoaded to, zda je true.
Note
Když voláte metodu během výčtu Loadforeach (C#) nebo For Each (Visual Basic), služba 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 se čtečka dat zavře a umožní vám vytvořit výčet nad kolekcí, aby se načetly odkazované objekty.
Metoda EntityCollection<TEntity>.Load se synchronizuje s metodou EntityReference<TEntity>.Load .