EntityCollection<TEntity>.Load(MergeOption) Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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 yang sama ObjectContext.
Contoh
Contoh ini didasarkan pada Model Penjualan Adventure Works. Untuk menjalankan kode dalam contoh ini, Anda harus telah menambahkan Model Penjualan AdventureWorks ke proyek Anda dan mengonfigurasi proyek Anda untuk menggunakan Kerangka Kerja Entitas. Untuk melakukan ini, selesaikan prosedur dalam Cara: Mengonfigurasi Proyek Kerangka Kerja Entitas secara Manual dan Cara: Menentukan Model dan File Pemetaan secara Manual.
Contoh ini memuat objek terkait SalesOrderHeader
untuk Contact
entitas.
// 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 internal RelatedEnd.ValidateLoad
sebelum memuat koleksi, yang memvalidasi bahwa panggilan ke Load memiliki kondisi yang benar. Metode RelatedEnd.ValidateLoad
memeriksa bahwa:
- ObjectContext Ada valid.
- Entitas tidak dalam status Deleted .
- MergeOption untuk Load harus NoTracking jika dan hanya jika entitas sumber adalah NoTracking. Jika entitas sumber diambil dengan yang lain MergeOption, LoadMergeOption bisa apa saja tetapi NoTracking (misalnya, entitas dapat dimuat dengan OverwriteChanges dan Load opsinya bisa AppendOnly).
- Jika
mergeOption
adalah NoTracking, Load tidak dipanggil pada entitas yang sudah dimuat dan Load tidak dipanggil pada yang tidak kosong, tidak dilacak RelatedEnd.
Ketika objek dalam koleksi sudah dimuat ke dalam ObjectContext, Load metode memberlakukan MergeOption yang ditentukan oleh mergeOption
parameter . Untuk informasi selengkapnya, baca Resolusi Identitas, Manajemen Status, dan Pelacakan Perubahan.
Untuk memuat objek terkait secara eksplisit, Anda harus memanggil Load
metode pada akhir terkait yang dikembalikan oleh properti navigasi. Untuk hubungan satu-ke-banyak, panggil Load metode pada EntityCollection<TEntity>. Untuk hubungan satu-ke-satu, panggil di LoadEntityReference<TEntity>. Ini memuat data objek terkait ke dalam konteks objek. Anda dapat menghitung melalui pengumpulan hasil yang dikembalikan menggunakan perulangan foreach
(For Each...Next
di Visual Basic) dan secara kondisional memanggil Load
metode pada EntityReference<TEntity> dan EntityCollection<TEntity> properti untuk setiap entitas dalam hasil.
Metode memuat Load objek terkait dari sumber data apakah IsLoaded adalah true
.
Catatan
Saat Anda memanggil Load metode selama foreach
enumerasi (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 bisa memuat hasil kueri ke dalam List<T> koleksi. Ini menutup pembaca data dan memungkinkan Anda menghitung koleksi untuk memuat objek yang dirujuk.
Metode EntityCollection<TEntity>.Load ini disinkronkan dengan EntityReference<TEntity>.Load metode .
Berlaku untuk
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk