LINQ - Entità

Una parte di ADO.NET Entity Framework, LINQ to Entities è più flessibile di LINQ to SQL, ma non è molto popolare a causa della sua complessità e mancanza di funzionalità chiave. Tuttavia, non ha le limitazioni di LINQ to SQL che consente la query di dati solo nel database del server SQL poiché LINQ to Entities facilita la query di dati in un gran numero di fornitori di dati come Oracle, MySQL, ecc.

Inoltre, ha un importante supporto da ASP.Net, nel senso che gli utenti possono utilizzare un controllo dell'origine dati per eseguire una query tramite LINQ a Entities e facilita l'associazione dei risultati senza alcuna necessità di codifica aggiuntiva.

LINQ to Entities è diventato per questi vantaggi il meccanismo standard per l'utilizzo di LINQ sui database al giorno d'oggi. È anche possibile con LINQ to Entities modificare i dettagli dei dati richiesti e eseguire facilmente un aggiornamento batch. Il fatto più interessante di LINQ to Entities è che ha la stessa sintassi di SQL e ha anche lo stesso gruppo di operatori di query standard come Join, Select, OrderBy, ecc.

Processo di creazione ed esecuzione di query LINQ to Entities

  • Costruzione di un ObjectQuery istanza da un file ObjectContext (Connessione entità)

  • Composizione di una query in C # o Visual Basic (VB) utilizzando l'istanza appena costruita

  • Conversione degli operatori di query standard di LINQ e delle espressioni LINQ in alberi di comando

  • Esecuzione della query passando direttamente al client eventuali eccezioni incontrate

  • Restituendo al client tutti i risultati della query

ObjectContext è qui la classe principale che consente l'interazione con Entity Data Modelo in altre parole funge da bridge che collega LINQ al database. Gli alberi dei comandi sono qui rappresentazioni delle query con compatibilità con il framework Entity.

L'Entity Framework, d'altra parte, è in realtà Object Relational Mapperabbreviato generalmente come ORM dagli sviluppatori che fa la generazione di oggetti di business e entità secondo le tabelle del database e facilita varie operazioni di base come creare, aggiornare, eliminare e leggere. La figura seguente mostra il framework di entità e i suoi componenti.

Esempio di ADD, UPDATE e DELETE utilizzando LINQ con Entity Model

Per prima cosa aggiungi Entity Model seguendo i passaggi seguenti.

Step 1- Fare clic con il tasto destro sul progetto e fare clic su Aggiungi nuovo elemento per aprire la finestra come mostrato di seguito. Selezionare ADO.NET Entity Data Model e specificare il nome e fare clic su Aggiungi.

Step 2 - Seleziona Generate from database.

Step 3 - Scegli Connessione database dal menu a discesa.

Step 4 - Seleziona tutte le tabelle.

Ora scrivi il codice seguente.

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();
      }
   }
}

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato: