LINQ - Entidades

Como parte de ADO.NET Entity Framework, LINQ to Entities es más flexible que LINQ to SQL, pero no es muy popular debido a su complejidad y falta de características clave. Sin embargo, no tiene las limitaciones de LINQ to SQL que permite la consulta de datos solo en la base de datos del servidor SQL ya que LINQ to Entities facilita la consulta de datos en una gran cantidad de proveedores de datos como Oracle, MySQL, etc.

Además, tiene un soporte importante de ASP.Net en el sentido de que los usuarios pueden hacer uso de un control de fuente de datos para ejecutar una consulta a través de LINQ to Entities y facilita la vinculación de los resultados sin necesidad de codificación adicional.

Por estas ventajas, LINQ to Entities se ha convertido en el mecanismo estándar para el uso de LINQ en bases de datos en la actualidad. También es posible con LINQ to Entities cambiar los detalles de los datos consultados y realizar una actualización por lotes fácilmente. El hecho más intrigante sobre LINQ to Entities es que tiene la misma sintaxis que SQL e incluso tiene el mismo grupo de operadores de consulta estándar como Join, Select, OrderBy, etc.

Proceso de creación y ejecución de consultas de LINQ to Entities

  • Construcción de un ObjectQuery instancia de una ObjectContext (Conexión de entidad)

  • Redactar una consulta en C # o Visual Basic (VB) usando la instancia recién construida

  • Conversión de operadores de consulta estándar de LINQ, así como expresiones LINQ en árboles de comandos

  • Ejecutar la consulta pasando las excepciones encontradas al cliente directamente

  • Devolver al cliente todos los resultados de la consulta

ObjectContext es aquí la clase principal que permite la interacción con Entity Data Modelo en otras palabras actúa como un puente que conecta LINQ a la base de datos. Los árboles de comandos son aquí representación de consultas con compatibilidad con Entity framework.

Entity Framework, por otro lado, es en realidad Object Relational Mapperabreviado generalmente como ORM por los desarrolladores que hace la generación de objetos de negocio así como entidades según las tablas de la base de datos y facilita varias operaciones básicas como crear, actualizar, borrar y leer. La siguiente ilustración muestra el marco de la entidad y sus componentes.

Ejemplo de ADD, UPDATE y DELETE usando LINQ con Entity Model

Primero agregue el modelo de entidad siguiendo los pasos a continuación.

Step 1- Haga clic con el botón derecho en el proyecto y haga clic en Agregar nuevo elemento para abrir una ventana como se muestra a continuación. Seleccione Modelo de datos de entidad ADO.NET, especifique el nombre y haga clic en Agregar.

Step 2 - Seleccionar Generate from database.

Step 3 - Elija Conexión a la base de datos en el menú desplegable.

Step 4 - Seleccionar todas las tablas.

Ahora escribe el siguiente código.

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

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado: