LINQ - เอนทิตี
ส่วนหนึ่งของ ADO.NET Entity Framework LINQ to Entities มีความยืดหยุ่นมากกว่า LINQ เป็น SQL แต่ไม่ได้รับความนิยมมากนักเนื่องจากมีความซับซ้อนและขาดคุณสมบัติหลัก อย่างไรก็ตามไม่มีข้อ จำกัด ของ LINQ กับ SQL ที่อนุญาตให้สืบค้นข้อมูลได้เฉพาะในฐานข้อมูลเซิร์ฟเวอร์ SQL เนื่องจาก LINQ to Entities ช่วยอำนวยความสะดวกในการสืบค้นข้อมูลในผู้ให้บริการข้อมูลจำนวนมากเช่น Oracle, MySQL และอื่น ๆ
ยิ่งไปกว่านั้นยังได้รับการสนับสนุนที่สำคัญจาก ASP.Net ในแง่ที่ผู้ใช้สามารถใช้ประโยชน์จากการควบคุมแหล่งข้อมูลเพื่อดำเนินการค้นหาผ่าน LINQ ไปยังเอนทิตีและอำนวยความสะดวกในการผูกผลลัพธ์โดยไม่จำเป็นต้องมีการเข้ารหัสเพิ่มเติม
LINQ to Entities มีข้อดีเหล่านี้กลายเป็นกลไกมาตรฐานสำหรับการใช้งาน LINQ บนฐานข้อมูลในปัจจุบัน นอกจากนี้ยังเป็นไปได้ด้วย LINQ to Entities เพื่อเปลี่ยนรายละเอียดข้อมูลที่สอบถามและทำการอัปเดตเป็นกลุ่ม ข้อเท็จจริงที่น่าสนใจที่สุดเกี่ยวกับ LINQ to Entities คือมีไวยากรณ์เหมือนกันกับ SQL และยังมีกลุ่มตัวดำเนินการสืบค้นมาตรฐานเดียวกันเช่น Join, Select, OrderBy เป็นต้น
LINQ ไปยังเอนทิตีการสร้างคิวรีและกระบวนการดำเนินการ
การก่อสร้าง ObjectQuery อินสแตนซ์จากไฟล์ ObjectContext (การเชื่อมต่อเอนทิตี)
การเขียนแบบสอบถามใน C # หรือ Visual Basic (VB) โดยใช้อินสแตนซ์ที่สร้างขึ้นใหม่
การแปลงตัวดำเนินการเคียวรีมาตรฐานของ LINQ ตลอดจนนิพจน์ LINQ เป็นแผนผังคำสั่ง
การดำเนินการค้นหาโดยส่งข้อยกเว้นใด ๆ ที่พบไปยังไคลเอ็นต์โดยตรง
กลับไปยังไคลเอนต์ผลการค้นหาทั้งหมด
ObjectContext นี่คือคลาสหลักที่เปิดใช้งานการโต้ตอบกับ Entity Data Modelหรือกล่าวอีกนัยหนึ่งทำหน้าที่เป็นสะพานที่เชื่อมต่อ LINQ กับฐานข้อมูล ต้นไม้คำสั่งเป็นตัวแทนของแบบสอบถามที่เข้ากันได้กับกรอบงานเอนทิตี
ในทางกลับกัน Entity Framework นั้นเป็นจริง Object Relational Mapperโดยทั่วไปเรียกย่อว่า ORM โดยนักพัฒนาที่สร้างวัตถุทางธุรกิจเช่นเดียวกับเอนทิตีตามตารางฐานข้อมูลและอำนวยความสะดวกในการดำเนินการขั้นพื้นฐานต่างๆเช่นสร้างอัปเดตลบและอ่าน ภาพประกอบต่อไปนี้แสดงกรอบงานเอนทิตีและส่วนประกอบต่างๆ
ตัวอย่างของ ADD, UPDATE และ DELETE โดยใช้ LINQ กับ Entity Model
ขั้นแรกให้เพิ่ม Entity Model โดยทำตามขั้นตอนด้านล่าง
Step 1- คลิกขวาที่โครงการและคลิกเพิ่มรายการใหม่จะเปิดหน้าต่างตามด้านล่าง เลือก ADO.NET Entity Data Model และระบุชื่อและคลิกที่ Add
Step 2 - เลือก Generate from database.
Step 3 - เลือกการเชื่อมต่อฐานข้อมูลจากเมนูแบบเลื่อนลง
Step 4 - เลือกตารางทั้งหมด
ตอนนี้เขียนโค้ดต่อไปนี้
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();
}
}
}
เมื่อโค้ดด้านบนถูกคอมไพล์และเรียกใช้งานจะให้ผลลัพธ์ดังนี้ -