LINQ - इकाइयाँ

ADO.NET एंटिटी फ्रेमवर्क का एक हिस्सा, LINQ to Entities, LINQ से SQL की तुलना में अधिक लचीला है, लेकिन इसकी जटिलता और प्रमुख विशेषताओं की कमी के कारण ज्यादा लोकप्रिय नहीं है। हालाँकि, इसमें SQL के लिए LINQ की सीमाएँ नहीं हैं जो SQL सर्वर डेटाबेस में डेटा क्वेरी की अनुमति देता है क्योंकि LINQ से लेकर एंटिटीज़ बड़ी संख्या में डेटा प्रदाता जैसे Oracle, MySQL इत्यादि में डेटा क्वेरी की सुविधा प्रदान करते हैं।

इसके अलावा, इसे ASP.Net से इस अर्थ में एक बड़ा समर्थन मिला है कि उपयोगकर्ता LINQ से Entities के माध्यम से एक क्वेरी निष्पादित करने के लिए डेटा स्रोत नियंत्रण का उपयोग कर सकते हैं और अतिरिक्त कोडिंग की आवश्यकता के बिना परिणामों के बंधन की सुविधा प्रदान करते हैं।

LINQ to Entities इन फायदों के लिए आजकल डेटाबेस पर LINQ के उपयोग के लिए मानक तंत्र बन गया है। LINQ Entities के साथ queried डाटा डिटेल्स को बदलना और बैच अपडेट को आसानी से कमिट करना भी संभव है। LINQ to Entities के बारे में सबसे पेचीदा तथ्य यह है कि इसमें SQL की तरह ही सिंटेक्स है और यहाँ तक कि मानक क्वेरी ऑपरेटर्स जैसे Join, Select, OrderBy, आदि का भी समूह है।

LINQ से लेकर एंटिटी क्वैरी क्रिएशन और एक्जिक्यूशन प्रोसेस

  • ए का निर्माण ObjectQuery उदाहरण से बाहर ObjectContext (इकाई कनेक्शन)

  • नवनिर्मित उदाहरण का उपयोग करके C # या Visual Basic (VB) में क्वेरी लिखना

  • LINQ के मानक क्वेरी ऑपरेटरों के साथ-साथ LINQ कमांड पेड़ में भी रूपांतरण

  • सीधे ग्राहक के सामने आए किसी भी अपवाद को पारित करने वाले क्वेरी को निष्पादित करना

  • सभी क्वेरी परिणामों के लिए क्लाइंट पर वापस लौटना

ObjectContext यहाँ प्राथमिक वर्ग है जो बातचीत को सक्षम बनाता है Entity Data Modelया दूसरे शब्दों में एक पुल के रूप में कार्य करता है जो LINQ को डेटाबेस से जोड़ता है। कमांड ट्री यहां एंटिटी फ्रेमवर्क के साथ संगतता के साथ क्वेरी प्रतिनिधित्व हैं।

दूसरी ओर, एंटिटी फ्रेमवर्क, वास्तव में है Object Relational Mapperआमतौर पर डेवलपर्स द्वारा ORM के रूप में संक्षिप्त किया जाता है जो व्यावसायिक वस्तुओं की पीढ़ी के साथ-साथ डेटाबेस तालिकाओं के अनुसार भी बनाता है और विभिन्न बुनियादी कार्यों जैसे बनाने, अपडेट करने, हटाने और पढ़ने की सुविधा प्रदान करता है। निम्नलिखित दृष्टांत इकाई की रूपरेखा और उसके घटकों को दर्शाता है।

ADD, UPDATE और DELETE का उदाहरण LINQ का उपयोग एंटिटी मॉडल के साथ

नीचे दिए गए चरणों का पालन करके पहले इकाई मॉडल जोड़ें।

Step 1- प्रोजेक्ट पर राइट क्लिक करें और Add new आइटम पर क्लिक करें नीचे के अनुसार विंडो खुल जाएगी। ADO.NET इकाई डेटा मॉडल का चयन करें और नाम निर्दिष्ट करें और 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();
      }
   }
}

जब उपरोक्त कोड संकलित और निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है -