Bagikan melalui


Pengaktifan Sumber Data untuk Pengkuerian LINQ (Visual Basic)

Ada berbagai cara untuk memperluas LINQ untuk memungkinkan sumber data dikueri dalam pola LINQ. Sumber data dapat berupa struktur data, layanan Web, sistem file, atau database, untuk diberi nama. Pola LINQ memudahkan klien untuk mengkueri sumber data tempat pengkuerian LINQ diaktifkan, karena sintaksis dan pola kueri tidak berubah. Cara di mana LINQ dapat diperluas ke sumber data ini mencakup berikut ini:

  • Penerapan antarmuka IEnumerable<T> dalam jenis untuk mengaktifkan LINQ untuk pengkuerian Objek jenis tersebut.

  • Pembuatan metode operator kueri standar seperti Where dan Select yang memperluas jenis, untuk mengaktifkan pengkuerian LINQ kustom jenis tersebut.

  • Pembuatan penyedia untuk sumber data Anda yang menerapkan antarmuka IQueryable<T>. Penyedia yang menerapkan antarmuka ini menerima kueri LINQ dalam bentuk pohon ekspresi yang dapat dijalankan dengan cara kustom, misalnya dari jarak jauh.

  • Pembuatan penyedia untuk sumber data Anda yang memanfaatkan teknologi LINQ yang ada. Penyedia tersebut tidak hanya akan mengaktifkan pengkuerian, tetapi juga operasi menyisipkan, memperbarui, dan menghapus serta pemetaan untuk jenis yang ditentukan pengguna.

Topik ini membahas opsi-opsi berikut.

Cara Mengaktifkan Pengkuerian LINQ Sumber Data Anda

Data Dalam Memori

Terdapat dua cara untuk mengaktifkan pengkuerian LINQ dari data dalam memori. Jika data berupa jenis yang menerapkan IEnumerable<T>, Anda dapat mengkueri data dengan menggunakan LINQ untuk Objek. Jika tidak memungkinkan untuk mengaktifkan enumerasi jenis Anda dengan menerapkan antarmuka IEnumerable<T>, Anda dapat menentukan metode operator kueri standar LINQ dalam jenis tersebut atau membuat metode operator kueri standar LINQ yang memperluas jenis tersebut. Penerapan kustom operator kueri standar harus menggunakan eksekusi yang ditangguhkan untuk menampilkan hasilnya.

Data Jarak Jauh

Opsi terbaik untuk pengaktifan pengkuerian LINQ sumber data jarak jauh adalah dengan menerapkan antarmuka IQueryable<T>. Akan tetapi, ini berbeda dari memperluas penyedia seperti LINQ untuk SQL bagi sumber data. Tidak ada model penyedia untuk memperluas teknologi LINQ yang ada, seperti LINQ untuk SQL, ke jenis sumber data lain yang tersedia dalam Visual Studio 2008.

Penyedia LINQ yang Dapat Dikueri

Penyedia LINQ yang menerapkan IQueryable<T> dapat sangat bervariasi dalam kompleksitasnya. Bagian ini membahas berbagai tingkat kompleksitas.

Penyedia IQueryable yang kurang kompleks mungkin tersambung melalui antarmuka dengan satu metode layanan Web. Jenis penyedia ini sangat spesifik karena mengharapkan informasi tertentu dalam kueri yang dihandelnya. Ia memiliki sistem jenis tertutup, yang mungkin memaparkan satu jenis hasil. Sebagian besar eksekusi kueri terjadi secara lokal, misalnya dengan menggunakan penerapan Enumerable dari operator kueri standar. Penyedia yang kurang kompleks mungkin hanya memeriksa satu ekspresi panggilan metode dalam pohon ekspresi yang mewakili kueri, dan membiarkan logika kueri yang tersisa dihandel di tempat lain.

Penyedia IQueryable dari kompleksitas menengah mungkin menargetkan sumber data yang memiliki bahasa kueri yang sebagian ekspresif. Jika menargetkan layanan Web, ia mungkin tersambung melalui antarmuka dengan lebih dari satu metode layanan Web dan memilih metode untuk memanggil berdasarkan pertanyaan yang diajukan oleh kueri. Penyedia kompleksitas menengah akan memiliki sistem jenis yang lebih kaya daripada penyedia sederhana, tetapi masih akan berupa sistem jenis tetap. Misalnya, penyedia mungkin memaparkan jenis yang memiliki hubungan satu-ke-banyak yang dapat dilalui, tetapi tidak akan menyediakan teknologi pemetaan untuk jenis yang ditentukan pengguna.

Penyedia IQueryable kompleks, seperti LINQ untuk penyedia SQL, mungkin menerjemahkan kueri LINQ lengkap ke bahasa kueri ekspresif, seperti SQL. Penyedia kompleks lebih umum daripada penyedia yang kurang kompleks, karena dapat menangani berbagai pertanyaan yang lebih luas dalam kueri. Ia juga memiliki sistem jenis terbuka dan oleh karena itu harus berisi infrastruktur yang luas untuk memetakan jenis yang ditentukan pengguna. Pengembangan penyedia yang kompleks membutuhkan usaha yang cukup signifikan.

Lihat juga