EntityCollection<TEntity>.Load(MergeOption) Yöntem

Tanım

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ı ObjectContextkarşı önceki sorgulardan döndürülebilecek nesnelerle nasıl birleştirileceği belirtir.

Örnekler

Bu örnek Adventure Works Satış Modeli'ni temel alır. Bu örnekteki 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 Proje El ile Yapılandırma ve nasıl yapılır: Model ve Eşleme Dosyalarını El ile Tanımlamaiçindeki yordamları tamamlayın.

Bu örnek, Contact varlığı için ilgili SalesOrderHeader nesnelerini 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, Load çağrısının doğru koşullara sahip olduğunu doğrulayan koleksiyonu yüklemeden önce iç RelatedEnd.ValidateLoad yöntemini çağırır. RelatedEnd.ValidateLoad yöntemi aşağıdakileri denetler:

Koleksiyondaki nesneler zaten ObjectContextyüklendiğinde, Load yöntemi mergeOption parametresi tarafından belirtilen MergeOption 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 Load yöntemini çağırmanız gerekir. Bire çok ilişkisi için EntityCollection<TEntity>üzerinde Load yöntemini çağırın. Bire bir ilişki için EntityReference<TEntity>üzerindeki Load çağırın. Bu, ilgili nesne verilerini nesne bağlamı içine yükler. Döndürülen sonuçların koleksiyonunda bir foreach döngüsü (Visual Basic'teFor Each...Next) kullanarak numaralandırabilir ve sonuçlardaki her varlığın EntityReference<TEntity> ve EntityCollection<TEntity> özelliklerinde Load yöntemini koşullu olarak çağırabilirsiniz.

Load yöntemi, IsLoadedtrueolsa da olmasa da veri kaynağından ilgili nesneleri yükler.

Not

foreach (C#) veya For Each (Visual Basic) numaralandırması sırasında Load yöntemini çağırdığınızda, Nesne Hizmetleri yeni bir veri okuyucu açmaya çalışır. Bağlantı dizesinde multipleactiveresultsets=true belirterek birden çok etkin sonuç kümesini etkinleştirmediğiniz sürece bu işlem başarısız olur. Sorgunun sonucunu bir List<T> koleksiyonuna 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 EntityReference<TEntity>.Load yöntemiyle eşitlenir.

Şunlara uygulanır