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 pemrogram kueri untuk berinteraksi dengan database (seperti Transact-SQL). Hal ini mengharuskan pengembang untuk mahir dalam bahasa pemrogram bahasa agar efektif, dan juga menyebabkan ketidakcocokan bahasa dalam lingkungan pengembangan. Misalnya, aplikasi yang menggunakan API akses data untuk mengeksekusi kueri terhadap database menentukan kueri sebagai harfiah string dengan menggunakan tanda kutip. String kueri ini tidak dapat dibaca oleh pengompilasi dan tidak diperiksa untuk kesalahan, 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 dukungan IntelliSense.

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

Mentransfer data dari tabel SQL ke objek dalam memori sering kali membosankan dan rawan kesalahan. Penyedia LINQ yang diimplementasikan oleh LINQ ke DataSet dan LINQ ke SQL mengonversi data sumber menjadi kumpulan objek berbasis IEnumerable. Programmer selalu melihat data sebagai kumpulan IEnumerable, baik saat Anda mengkueri maupun saat Anda memperbarui. Dukungan IntelliSense penuh disediakan untuk menulis kueri terhadap kumpulan tersebut.

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

Diagram berikut memberikan gambaran umum keterkaitan teknologi LINQ ADO.NET dengan bahasa pemrogram tingkat tinggi dan sumber data dengan dukungan LINQ.

LINQ to ADO.NET overview

Untuk mengetahui informasi selengkapnya tentang LINQ, lihat Language Integrated Query (LINQ).

Bagian berikut memberikan informasi lebih lanjut tentang LINQ ke DataSet, LINQ ke SQL, dan LINQ ke Entitas.

LINQ ke DataSet

DataSet adalah elemen kunci dari model pemrograman terputus yang mendasar pembangunan ADO.NET, dan digunakan secara luas. LINQ ke DataSet memungkinkan pengembang membangun kemampuan kueri yang lebih kaya ke DataSet dengan menggunakan mekanisme formulasi 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 bagi 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 menghasilkan kelas .NET Framework yang mewakili data. Alih-alih memetakan ke model data konseptual, kelas yang dihasilkan ini memetakan 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 kumpulan dalam memori dan DataSet, selain sumber data lain seperti XML. Untuk informasi selengkapnya, lihat LINQ to SQL.

LINQ ke Entitas

Sebagian besar aplikasi saat ini ditulis di atas database relasional. Pada titik tertentu, aplikasi-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 membuat model data domain tertentu sehingga aplikasi dapat berinteraksi dengan data sebagai objek. Untuk mengetahui informasi selengkapnya, lihat ADO.NET Entity Framework.

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

Lihat juga