LINQ - Сущности

Являясь частью ADO.NET Entity Framework, LINQ to Entities более гибок, чем LINQ to SQL, но не пользуется большой популярностью из-за своей сложности и отсутствия ключевых функций. Однако он не имеет ограничений LINQ to SQL, которые позволяют запрашивать данные только в базе данных SQL-сервера, поскольку LINQ to Entities облегчает запрос данных в большом количестве поставщиков данных, таких как Oracle, MySQL и т. Д.

Более того, он получил серьезную поддержку со стороны ASP.Net в том смысле, что пользователи могут использовать элемент управления источником данных для выполнения запроса через LINQ to Entities и облегчает привязку результатов без необходимости дополнительного кодирования.

Благодаря этим преимуществам LINQ to Entities стал в настоящее время стандартным механизмом использования LINQ в базах данных. LINQ to Entities также позволяет изменять детали запрашиваемых данных и легко выполнять пакетное обновление. Самым интригующим фактом в LINQ to Entities является то, что он имеет тот же синтаксис, что и SQL, и даже имеет ту же группу стандартных операторов запросов, таких как Join, Select, OrderBy и т. Д.

Процесс создания и выполнения запросов LINQ to Entities

  • Строительство ObjectQuery экземпляр из ObjectContext (Подключение сущности)

  • Составление запроса на C # или Visual Basic (VB) с использованием вновь созданного экземпляра

  • Преобразование стандартных операторов запросов LINQ, а также выражений LINQ в деревья команд

  • Выполнение запроса с передачей клиенту любых обнаруженных исключений напрямую

  • Возвращение клиенту всех результатов запроса

ObjectContext это основной класс, который позволяет взаимодействовать с Entity Data Modelили, другими словами, действует как мост, соединяющий LINQ с базой данных. Деревья команд представляют собой представление запроса с совместимостью со структурой Entity.

С другой стороны, Entity Framework на самом деле Object Relational Mapperобычно сокращенно ORM разработчиками, которые генерируют бизнес-объекты, а также сущности в соответствии с таблицами базы данных и облегчают различные базовые операции, такие как создание, обновление, удаление и чтение. На следующем рисунке показана структура сущности и ее компоненты.

Пример ADD, UPDATE и DELETE с использованием LINQ с Entity Model

Сначала добавьте модель сущности, выполнив следующие шаги.

Step 1- Щелкните правой кнопкой мыши проект и нажмите «Добавить новый элемент», чтобы открыть окно, как показано ниже. Выберите модель данных сущности ADO.NET, укажите имя и нажмите Добавить.

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

Когда приведенный выше код компилируется и выполняется, он дает следующий результат: