LINQ - Varlıklar
ADO.NET Entity Framework'ün bir parçası olan LINQ to Entities, LINQ to SQL'den daha esnektir, ancak karmaşıklığı ve anahtar özelliklerin bulunmaması nedeniyle pek popüler değildir. Ancak, LINQ to Entities, Oracle, MySQL, vb. Gibi çok sayıda veri sağlayıcıda veri sorgusunu kolaylaştırdığından, yalnızca SQL sunucu veritabanında veri sorgusuna izin veren LINQ to SQL sınırlamalarına sahip değildir.
Ayrıca, kullanıcıların LINQ aracılığıyla Varlıklara bir sorgu yürütmek için bir veri kaynağı kontrolünden yararlanabilmesi ve ek kodlamaya gerek kalmadan sonuçların bağlanmasını kolaylaştırması anlamında ASP.Net'ten büyük bir destek almıştır.
LINQ to Entities, günümüzde veritabanlarında LINQ kullanımı için bu avantajlar için standart mekanizma haline gelmiştir. LINQ to Entities ile sorgulanan veri ayrıntılarını değiştirmek ve kolayca bir toplu güncelleme gerçekleştirmek de mümkündür. LINQ to Entities ile ilgili en ilgi çekici gerçek, SQL ile aynı sözdizimine sahip olması ve hatta Join, Select, OrderBy, vb. Gibi aynı standart sorgu operatörleri grubuna sahip olmasıdır.
LINQ to Entities Sorgu Oluşturma ve Yürütme Süreci
İnşaatı ObjectQuery bir örnek ObjectContext (Varlık Bağlantısı)
Yeni oluşturulan örneği kullanarak C # veya Visual Basic (VB) 'de bir sorgu oluşturma
LINQ standart sorgu operatörlerinin yanı sıra LINQ ifadelerinin komut ağaçlarına dönüştürülmesi
Karşılaşılan istisnaları doğrudan istemciye ileten sorguyu yürütme
Müşteriye tüm sorgu sonuçlarını döndürmek
ObjectContext burada, etkileşim sağlayan birincil sınıf Entity Data Modelveya başka bir deyişle, LINQ'yu veritabanına bağlayan bir köprü görevi görür. Komut ağaçları, burada Entity çerçevesiyle uyumlulukla birlikte sorgu temsilidir.
Öte yandan Entity Framework, aslında Object Relational MapperVeritabanı tablolarına göre iş nesnelerinin ve varlıkların oluşturulmasını yapan ve oluşturma, güncelleme, silme ve okuma gibi çeşitli temel işlemleri kolaylaştıran geliştiriciler tarafından genel olarak ORM olarak kısaltılır. Aşağıdaki çizim, varlık çerçevesini ve bileşenlerini gösterir.
Varlık Modeli ile LINQ kullanarak EKLEME, GÜNCELLEME ve SİLME örneği
Öncelikle aşağıdaki adımları izleyerek Varlık Modeli ekleyin.
Step 1- Projeye sağ tıklayın ve yeni öğe ekle'ye tıklayın, aşağıdaki gibi pencere açılacaktır. ADO.NET Varlık Veri Modeli'ni seçin ve adı belirtin ve Ekle'ye tıklayın.
Step 2 - Seçin Generate from database.
Step 3 - Açılır menüden Veritabanı Bağlantısı'nı seçin.
Step 4 - Tüm masaları seçin.
Şimdi aşağıdaki kodu yazın.
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();
}
}
}
Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -