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();
}
}
}
Когда приведенный выше код компилируется и выполняется, он дает следующий результат: