LINQ - Entidades
Como parte do ADO.NET Entity Framework, o LINQ to Entities é mais flexível do que o LINQ to SQL, mas não é muito popular devido à sua complexidade e falta de recursos principais. No entanto, ele não tem as limitações do LINQ to SQL que permite a consulta de dados apenas no banco de dados do servidor SQL, pois o LINQ to Entities facilita a consulta de dados em um grande número de provedores de dados como Oracle, MySQL, etc.
Além disso, conta com um grande suporte do ASP.Net no sentido de que os usuários podem utilizar um controle de fonte de dados para executar uma consulta via LINQ to Entities e facilita a vinculação dos resultados sem a necessidade de codificação extra.
O LINQ to Entities, por essas vantagens, tornou-se o mecanismo padrão para o uso do LINQ em bancos de dados hoje em dia. Também é possível com o LINQ to Entities alterar os detalhes dos dados consultados e fazer uma atualização em lote facilmente. O que é o fato mais intrigante sobre LINQ to Entities é que ele tem a mesma sintaxe do SQL e ainda tem o mesmo grupo de operadores de consulta padrão como Join, Select, OrderBy, etc.
LINQ to Entities Query Creation and Execution Process
Construção de um ObjectQuery instância fora de um ObjectContext (Conexão de Entidade)
Compondo uma consulta em C # ou Visual Basic (VB) usando a instância recém-construída
Conversão de operadores de consulta padrão de LINQ, bem como expressões LINQ em árvores de comando
Executar a consulta passando quaisquer exceções encontradas para o cliente diretamente
Devolver ao cliente todos os resultados da consulta
ObjectContext é aqui a classe principal que permite a interação com Entity Data Modelou em outras palavras, atua como uma ponte que conecta o LINQ ao banco de dados. Árvores de comando são aqui representação de consulta com compatibilidade com a estrutura Entity.
A Entity Framework, por outro lado, é realmente Object Relational Mapperabreviado geralmente como ORM pelos desenvolvedores que faz a geração de objetos de negócios, bem como entidades de acordo com as tabelas do banco de dados e facilita várias operações básicas como criar, atualizar, excluir e ler. A ilustração a seguir mostra a estrutura da entidade e seus componentes.
Exemplo de ADD, UPDATE e DELETE usando LINQ com modelo de entidade
Primeiro adicione o modelo de entidade seguindo as etapas abaixo.
Step 1- Clique com o botão direito no projeto e clique em adicionar novo item para abrir a janela conforme abaixo. Selecione ADO.NET Entity Data Model, especifique o nome e clique em Add.
Step 2 - Selecione Generate from database.
Step 3 - Escolha Conexão de banco de dados no menu suspenso.
Step 4 - Selecione todas as tabelas.
Agora escreva o seguinte 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();
}
}
}
Quando o código acima é compilado e executado, ele produz o seguinte resultado -