Bagikan melalui


LINQ dan ADO.NET

Saat ini, banyak pengembang bisnis harus menggunakan dua (atau lebih) bahasa pemrograman: bahasa tingkat tinggi untuk logika bisnis dan lapisan presentasi (seperti Visual C# atau Visual Basic), dan bahasa kueri untuk berinteraksi dengan database (seperti Transact-SQL). Hal ini mengharuskan pengembang untuk mahir dalam beberapa bahasa untuk menjadi efektif, dan juga menyebabkan ketidakcocokan bahasa di lingkungan pengembangan. Misalnya, aplikasi yang menggunakan API akses data untuk menjalankan kueri terhadap database menentukan kueri sebagai string literal dengan menggunakan tanda kutip. String kueri ini tidak dapat dibaca oleh pengkompilasi dan tidak diperiksa kesalahannya, seperti sintaks yang tidak valid atau apakah kolom atau baris yang direferensikannya benar-benar ada. Tidak ada pemeriksaan jenis parameter kueri dan juga tidak ada IntelliSense dukungan.

Language-Integrated Query (LINQ) memungkinkan pengembang untuk membentuk kueri berbasis set dalam kode aplikasi mereka, tanpa harus menggunakan bahasa kueri terpisah. Anda dapat menulis kueri LINQ terhadap berbagai sumber data yang dapat dihitung (yaitu, sumber data yang mengimplementasikan IEnumerable antarmuka), seperti struktur data dalam memori, dokumen XML, database SQL, dan DataSet objek. Meskipun sumber data yang dapat dijumlahkan ini diimplementasikan dengan berbagai cara, semuanya mengekspos sintaks dan konstruksi bahasa yang sama. Karena kueri dapat dibentuk dalam bahasa pemrograman itu sendiri, Anda tidak perlu menggunakan bahasa kueri lain yang disematkan sebagai literal string yang tidak dapat dipahami atau diverifikasi oleh pengkompilasi. Mengintegrasikan kueri ke dalam bahasa pemrograman juga memungkinkan pemrogram Visual Studio menjadi lebih produktif dengan menyediakan jenis waktu kompilasi dan pemeriksaan sintaksis, dan IntelliSense. Fitur ini mengurangi kebutuhan untuk menelusuri dan memperbaiki kesalahan kueri.

Mentransfer data dari tabel SQL ke dalam objek dalam memori seringkali melelahkan dan rawan kesalahan. Penyedia LINQ yang diimplementasikan oleh LINQ ke DataSet dan LINQ ke SQL mengonversi data sumber menjadi koleksi berbasis objek IEnumerable. Programmer selalu menampilkan data sebagai IEnumerable koleksi, baik saat Anda mengkueri maupun saat Anda memperbarui. Dukungan penuh IntelliSense disediakan untuk pemrograman kueri pada koleksi-koleksi tersebut.

Ada tiga teknologi ADO.NET Language-Integrated Query (LINQ) terpisah: LINQ ke Himpunan Data, LINQ ke SQL, dan LINQ ke Entitas. LINQ ke Himpunan Data menyediakan kueri yang lebih kaya dan dioptimalkan melalui DataSet dan LINQ ke SQL memungkinkan Anda untuk langsung mengkueri skema database SQL Server, dan LINQ ke Entitas memungkinkan Anda untuk mengkueri Model Data Entitas.

Diagram berikut ini memberikan gambaran umum tentang bagaimana teknologi ADO.NET LINQ terkait dengan bahasa pemrograman tingkat tinggi dan sumber data dengan dukungan LINQ.

DPUE_LinqToAdoNetOverview_bpuedev11 gambaran umum LINQ ke ADO.NET

Untuk informasi selengkapnya tentang LINQ, lihat Kueri Terintegrasi Bahasa (LINQ).

Bagian berikut ini menyediakan informasi selengkapnya tentang LINQ ke Himpunan Data, LINQ ke SQL, dan LINQ ke Entitas.

LINQ ke DataSet

DataSet adalah elemen kunci dari model pemrograman terputus yang ADO.NET dibangun, dan banyak digunakan. LINQ ke Himpunan Data memungkinkan pengembang untuk membangun kemampuan DataSet kueri yang lebih kaya dengan menggunakan mekanisme rumusan kueri yang sama yang tersedia untuk banyak sumber data lainnya. Untuk informasi selengkapnya, lihat LINQ ke Himpunan Data.

LINQ ke SQL

LINQ ke SQL adalah alat yang berguna untuk pengembang yang tidak memerlukan pemetaan ke model konseptual. Dengan menggunakan LINQ ke SQL, Anda dapat menggunakan model pemrograman LINQ langsung melalui skema database yang ada. LINQ ke SQL memungkinkan pengembang untuk menghasilkan kelas .NET Framework yang mewakili data. Daripada memetakan ke model data konseptual, kelas yang dihasilkan ini dipetakan langsung ke tabel database, tampilan, prosedur tersimpan, dan fungsi yang ditentukan pengguna.

Dengan LINQ ke SQL, pengembang dapat menulis kode langsung terhadap skema penyimpanan menggunakan pola pemrograman LINQ yang sama dengan koleksi dalam memori dan DataSet, selain sumber data lain seperti XML. Untuk informasi selengkapnya, lihat LINQ ke SQL.

LINQ untuk Entitas

Sebagian besar aplikasi saat ini ditulis di atas database relasional. Pada titik tertentu, aplikasi ini perlu berinteraksi dengan data yang diwakili dalam bentuk relasional. Skema database tidak selalu ideal untuk membangun aplikasi, dan model konseptual aplikasi tidak sama dengan model logis database. Model Data Entitas adalah model data konseptual yang dapat digunakan untuk memodelkan data domain tertentu sehingga aplikasi dapat berinteraksi dengan data sebagai objek. Untuk informasi selengkapnya, lihat ADO.NET Entity Framework.

Melalui Model Data Entitas, data relasional diekspos sebagai objek di lingkungan .NET. Ini membuat lapisan objek menjadi target yang ideal untuk dukungan LINQ, memungkinkan pengembang untuk merumuskan kueri terhadap database dari bahasa yang digunakan untuk membangun logika bisnis. Kemampuan ini dikenal sebagai LINQ ke Entitas. Untuk informasi selengkapnya, lihat LINQ ke Entitas.

Lihat juga