Bagikan melalui


EntityCollection<TEntity>.Load(MergeOption) Metode

Definisi

Memuat objek terkait ke dalam koleksi, menggunakan opsi penggabungan yang ditentukan.

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

Menentukan bagaimana objek dalam koleksi ini harus digabungkan dengan objek yang mungkin telah dikembalikan dari kueri sebelumnya terhadap ObjectContextyang sama.

Contoh

Contoh ini didasarkan pada Model Penjualan Adventure Works. Untuk menjalankan kode dalam contoh ini, Anda harus sudah menambahkan Model Penjualan AdventureWorks ke proyek Anda dan mengonfigurasi proyek Anda untuk menggunakan Kerangka Kerja Entitas. Untuk melakukan ini, selesaikan prosedur di Cara: Mengonfigurasi Proyek Kerangka Kerja Entitas secara Manual dan Cara: Menentukan Model dan File Pemetaan secara Manual.

Contoh ini memuat objek SalesOrderHeader terkait untuk entitas 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()));
        }
    }
}

Keterangan

Metode ini memanggil metode RelatedEnd.ValidateLoad internal sebelum memuat koleksi, yang memvalidasi bahwa panggilan ke Load memiliki kondisi yang benar. Metode RelatedEnd.ValidateLoad memeriksa bahwa:

Ketika objek dalam koleksi sudah dimuat ke dalam ObjectContext, metode Load memberlakukan MergeOption yang ditentukan oleh parameter mergeOption. Untuk informasi selengkapnya, lihat Resolusi Identitas, Manajemen Status, dan Pelacakan Perubahan.

Untuk memuat objek terkait secara eksplisit, Anda harus memanggil metode Load pada akhir terkait yang dikembalikan oleh properti navigasi. Untuk hubungan satu ke banyak, panggil metode Load pada EntityCollection<TEntity>. Untuk hubungan satu ke satu, panggil Load di EntityReference<TEntity>. Ini memuat data objek terkait ke dalam konteks objek. Anda dapat menghitung melalui kumpulan hasil yang dikembalikan menggunakan perulangan foreach (For Each...Next di Visual Basic) dan secara kondisional memanggil metode Load pada properti EntityReference<TEntity> dan EntityCollection<TEntity> untuk setiap entitas dalam hasil.

Metode Load memuat objek terkait dari sumber data apakah IsLoadedtrueatau tidak.

Nota

Saat Anda memanggil metode Load selama enumerasi foreach (C#) atau For Each (Visual Basic), Object Services mencoba membuka pembaca data baru. Operasi ini akan gagal kecuali Anda telah mengaktifkan beberapa kumpulan hasil aktif dengan menentukan multipleactiveresultsets=true dalam string koneksi. Anda juga dapat memuat hasil kueri ke dalam koleksi List<T>. Ini menutup pembaca data dan memungkinkan Anda menghitung koleksi untuk memuat objek yang dirujuk.

Metode EntityCollection<TEntity>.Load disinkronkan dengan metode EntityReference<TEntity>.Load.

Berlaku untuk