EntityCollection<TEntity>.Load(MergeOption) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Belirtilen birleştirme seçeneğini kullanarak ilgili nesneleri koleksiyona yükler.
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)
Parametreler
- mergeOption
- MergeOption
Bu koleksiyondaki nesnelerin aynı ObjectContextüzerinde önceki sorgulardan döndürülebilecek nesnelerle nasıl birleştirileceği belirtir.
Örnekler
Bu örnekte Adventure Works Satış Modeli temel alınmaktadır. Bu örnekte kodu çalıştırmak için AdventureWorks Satış Modeli'ni projenize zaten eklemiş ve projenizi Entity Framework kullanacak şekilde yapılandırmış olmanız gerekir. Bunu yapmak için , Nasıl yapılır: Entity Framework Projesini El ile Yapılandırma ve Nasıl Yapılır: Model ve Eşleme Dosyalarını El ile Tanımlama içindeki yordamları tamamlayın.
Bu örnek, varlık için Contact
ilgili SalesOrderHeader
nesneleri yükler.
// 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()));
}
}
}
Açıklamalar
Bu yöntem, bir çağrısının Load doğru koşullara sahip olduğunu doğrulayan koleksiyonu yüklemeden önce iç RelatedEnd.ValidateLoad
yöntemi çağırır. yöntemi aşağıdakileri RelatedEnd.ValidateLoad
denetler:
- Geçerli ObjectContext bir var.
- Varlık bir Deleted durumda değil.
- MergeOptioniçin Load ise ve yalnızca kaynak varlık ise NoTrackingolmalıdırNoTracking. Kaynak varlık başka MergeOptionLoadMergeOption herhangi bir ile alındıysa , dışında NoTracking herhangi bir şey olabilir (örneğin, varlık yüklenmiş OverwriteChanges olabilir ve Load seçeneği olabilir).AppendOnly
- ise
mergeOption
, önceden yüklenmiş bir varlıkta çağrılır ve Load boş olmayan, izlenmeyen bir üzerinde çağrılmıyordurRelatedEnd. LoadNoTracking
Koleksiyondaki nesneler içine ObjectContextLoad zaten yüklendiğinde yöntemi parametresi tarafından belirtilen öğesini MergeOptionmergeOption
zorlar. Daha fazla bilgi için bkz. Kimlik Çözümlemesi, Durum Yönetimi ve Değişiklik İzleme.
İlgili nesneleri açıkça yüklemek için, gezinti özelliği tarafından döndürülen ilgili uçta yöntemini çağırmanız Load
gerekir. Bire çok ilişkisi için üzerinde yöntemini EntityCollection<TEntity>çağırınLoad. Bire bir ilişki için üzerinde çağrısında bulunur LoadEntityReference<TEntity>. Bu, ilgili nesne verilerini nesne bağlamı içine yükler. Bir döngü (For Each...Next
Visual Basic'te) kullanarak foreach
döndürülen sonuçların koleksiyonunda numaralandırabilir ve sonuçlardaki her varlığın Load
ve EntityCollection<TEntity> özelliklerinde yöntemini EntityReference<TEntity> koşullu olarak çağırabilirsiniz.
yöntemi, Load olsun veya olmasın IsLoadedtrue
veri kaynağından ilgili nesneleri yükler.
Not
(C#) veya For Each
(Visual Basic) numaralandırması sırasında foreach
yöntemini çağırdığınızdaLoad, Object Services yeni bir veri okuyucu açmayı dener. Bağlantı dizesinde belirterek multipleactiveresultsets=true
birden çok etkin sonuç kümesini etkinleştirmediğiniz sürece bu işlem başarısız olur. Sorgunun sonucunu bir List<T> koleksiyona da yükleyebilirsiniz. Bu işlem, veri okuyucuyu kapatır ve başvurulan nesneleri yüklemek için koleksiyon üzerinde numaralandırmanıza olanak tanır.
EntityCollection<TEntity>.Load yöntemi yöntemiyle EntityReference<TEntity>.Load eşitlenir.
Şunlara uygulanır
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin