LINQ - Entitas

Sebagai bagian dari Kerangka Kerja Entitas ADO.NET, LINQ ke Entitas lebih fleksibel daripada LINQ ke SQL, tetapi tidak terlalu populer karena kompleksitas dan kurangnya fitur utama. Namun, LINQ ke SQL tidak memiliki batasan yang memungkinkan kueri data hanya dalam database server SQL karena LINQ ke Entitas memfasilitasi kueri data di sejumlah besar penyedia data seperti Oracle, MySQL, dll.

Selain itu, ia mendapat dukungan besar dari ASP.Net dalam arti bahwa pengguna dapat menggunakan kontrol sumber data untuk menjalankan kueri melalui LINQ ke Entitas dan memfasilitasi pengikatan hasil tanpa memerlukan pengkodean tambahan.

LINQ to Entities memiliki kelebihan ini menjadi mekanisme standar untuk penggunaan LINQ pada database saat ini. Ini juga memungkinkan dengan LINQ ke Entitas untuk mengubah detail data yang ditanyakan dan melakukan pembaruan batch dengan mudah. Fakta paling menarik tentang LINQ to Entities adalah bahwa LINQ memiliki sintaks yang sama seperti SQL dan bahkan memiliki grup operator kueri standar yang sama seperti Gabung, Pilih, OrderBy, dll.

LINQ ke Proses Pembuatan dan Eksekusi Kueri Entitas

  • Pembangunan sebuah ObjectQuery contoh dari ObjectContext (Koneksi Entitas)

  • Menulis kueri baik di C # atau Visual Basic (VB) dengan menggunakan contoh yang baru dibangun

  • Konversi operator kueri standar LINQ serta ekspresi LINQ menjadi pohon perintah

  • Menjalankan kueri dengan meneruskan pengecualian apa pun yang dihadapi klien secara langsung

  • Kembali ke klien semua hasil kueri

ObjectContext di sini kelas utama yang memungkinkan interaksi dengan Entity Data Modelatau dengan kata lain berperan sebagai jembatan yang menghubungkan LINQ ke database. Pohon perintah di sini adalah representasi kueri dengan kompatibilitas dengan kerangka kerja Entitas.

Kerangka Entitas, di sisi lain, sebenarnya Object Relational Mapperdisingkat ORM secara umum oleh pengembang yang melakukan pembuatan objek bisnis serta entitas sesuai tabel database dan memfasilitasi berbagai operasi dasar seperti membuat, memperbarui, menghapus, dan membaca. Ilustrasi berikut menunjukkan kerangka entitas dan komponennya.

Contoh ADD, UPDATE, dan DELETE menggunakan LINQ dengan Entity Model

Pertama tambahkan Model Entitas dengan mengikuti langkah-langkah di bawah ini.

Step 1- Klik kanan pada proyek dan klik tambahkan item baru akan membuka jendela seperti di bawah ini. Pilih ADO.NET Entity Data Model dan tentukan nama dan klik Add.

Step 2 - Pilih Generate from database.

Step 3 - Pilih Koneksi Database dari menu drop-down.

Step 4 - Pilih semua tabel.

Sekarang tulis kode berikut.

using DataAccess;
using System;
using System.Linq;

namespace LINQTOSQLConsoleApp {
   public class LinqToEntityModel {
      static void Main(string[] args) {

         using (LinqToSQLDBEntities context = new LinqToSQLDBEntities()) {
            //Get the List of Departments from Database
            var departmentList = from d in context.Departments
            select d;

            foreach (var dept in departmentList) {
               Console.WriteLine("Department Id = {0} , Department Name = {1}",
                  dept.DepartmentId, dept.Name);
            }

            //Add new Department
            DataAccess.Department department = new DataAccess.Department();
            department.Name = "Support";

            context.Departments.Add(department);
            context.SaveChanges();

            Console.WriteLine("Department Name = Support is inserted in Database");

            //Update existing Department
            DataAccess.Department updateDepartment = context.Departments.FirstOrDefault(d ⇒d.DepartmentId == 1);
            updateDepartment.Name = "Account updated";
            context.SaveChanges();

            Console.WriteLine("Department Name = Account is updated in Database");

            //Delete existing Department
            DataAccess.Department deleteDepartment = context.Departments.FirstOrDefault(d ⇒d.DepartmentId == 3);
            context.Departments.Remove(deleteDepartment);
            context.SaveChanges();

            Console.WriteLine("Department Name = Pre-Sales is deleted in Database");

            //Get the Updated List of Departments from Database
            departmentList = from d in context.Departments
            select d;

            foreach (var dept in departmentList) {
               Console.WriteLine("Department Id = {0} , Department Name = {1}",
                  dept.DepartmentId, dept.Name);
            }
         }

         Console.WriteLine("\nPress any key to continue.");
         Console.ReadKey();
      }
   }
}

Ketika kode di atas dikompilasi dan dijalankan, itu menghasilkan hasil sebagai berikut -