DataLoadOptions Kelas
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.
Menyediakan pemuatan dan pemfilteran data terkait segera.
public ref class DataLoadOptions sealed
public sealed class DataLoadOptions
type DataLoadOptions = class
Public NotInheritable Class DataLoadOptions
- Warisan
-
DataLoadOptions
Contoh
Saat Anda mengambil Customers dari database sampel Northwind, Anda dapat menggunakan DataLoadOptions untuk menentukan yang Orders juga akan diambil. Anda bahkan dapat menentukan subset Orders mana yang akan diambil.
Keterangan
Kelas DataLoadOptions ini menyediakan pemuatan dan pemfilteran data terkait segera.
Saat Anda meminta sebuah objek, Anda sebenarnya hanya mengambil objek yang diminta. Objek terkait tidak diambil secara otomatis secara bersamaan. Untuk informasi lebih lanjut, lihat Memanggil Data Antara Relasi.
Kelas ini DataLoadOptions menyediakan dua metode untuk mencapai pemuatan segera data terkait yang ditentukan. Metode ini LoadWith memungkinkan pemuatan data segera yang terkait dengan target utama. Metode ini AssociateWith memungkinkan pemfilteran objek terkait.
Aturan
Pertimbangkan aturan berikut mengenai DataLoadOptions penggunaan:
- Menetapkan DataLoadOptions ke DataContext setelah kueri pertama dijalankan menghasilkan pengecualian.
- Memodifikasi DataLoadOptions setelah ditetapkan ke menghasilkan DataContext pengecualian.
Menangani siklus
LoadWith dan AssociateWith direktif tidak boleh membuat siklus. Berikut ini mewakili contoh grafik tersebut:
Contoh 1: Rekursif mandiri
dlo.LoadWith<Employee>(e => e.Reports);
Contoh 2: Back-pointer
dlo.LoadWith <Customer>(c => C.Orders);dlo.LoadWith <Order>(o => o.Customer);
Contoh 3: Siklus yang lebih panjang
Meskipun ini tidak boleh terjadi dalam model yang dinormalisasi dengan baik, itu mungkin.
dlo.LoadWith <A>(a => a.Bs);dlo.LoadWith <B>(b => b.Cs);dlo.LoadWith <C>(c => c.As);
Contoh 4: SubKueri rekursif mandiri
dlo.AssociateWith<A>(a=>a.As.Where(a=>a.Id=33));
Contoh 5: Subkueri rekursif yang lebih panjang
dlo.AssociateWith<A>(a=>a.Bs.Where(b=>b.Id==3));dlo.AssociateWith<B>(b=>b.As.Where(a=>a.Id==3));
Aturan umum berikut membantu Anda memahami apa yang terjadi dalam skenario ini:
LoadWith: Setiap panggilan untuk LoadWith memeriksa apakah siklus telah dimasukkan ke dalam grafik. Jika ada, seperti dalam Contoh 1, 2, dan 3, pengecualian akan dilemparkan.
AssociateWith: Pada waktu proses, mesin tidak menerapkan klausa SubQuery yang ada ke hubungan di dalam ekspresi.
- Dalam Contoh 4,
Whereklausul dijalankan terhadap semuaA, bukan hanya yang difilter oleh ekspresi SubQuery itu sendiri (karena itu akan rekursif). - Dalam Contoh 5, klausa pertama
Wherediterapkan ke semuaBs, meskipun ada subkueri padaB. Klausa keduaWherediterapkan ke semuaAmeskipun ada subkueri padaA.
- Dalam Contoh 4,
Konstruktor
| Nama | Deskripsi |
|---|---|
| DataLoadOptions() |
Menginisialisasi instans baru dari kelas DataLoadOptions. |
Metode
| Nama | Deskripsi |
|---|---|
| AssociateWith(LambdaExpression) |
Memfilter objek yang diambil untuk hubungan tertentu. |
| AssociateWith<T>(Expression<Func<T,Object>>) |
Memfilter objek yang diambil untuk hubungan tertentu. |
| Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
| GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
| GetType() |
Mendapatkan Type instans saat ini. (Diperoleh dari Object) |
| LoadWith(LambdaExpression) |
Mengambil data tertentu yang terkait dengan target utama dengan menggunakan ekspresi lambda. |
| LoadWith<T>(Expression<Func<T,Object>>) |
Menentukan sub-objek mana yang akan diambil saat kueri dikirimkan untuk objek jenis T. |
| MemberwiseClone() |
Membuat salinan dangkal dari Objectsaat ini. (Diperoleh dari Object) |
| ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |