O Entity Framework é uma ferramenta da Microsoft, pertencente ao pacote ADO.NET, que permite ao desenvolvedor trabalhar com banco de dados relacional de maneira abstrata.
Para entender o Entity Framework, primeiro é necessário saber o que é ORM. ORM (Object Relational Mapping), ou mapeamento de objeto relacional, é uma técnica para diminuir a impedância da programação orientada a objetos com bancos de dados relacionais, apresentando as tabelas como classes e os registros de cada tabela como registros nas classes correspondentes.
O Entity Framework permite que o desenvolvimento seja focado nas regras do negócio, abstraindo a camada de banco de dados.
Existem 3 formas de se trabalhar com o Entity Framework:
O Linq (Language Integrated Query) é uma tecnologia da Microsoft.NET que adiciona funcionalidades de consulta às linguagens de programação DotNet, correspondendo a uma sintaxe unificada para consultas em fontes de dados variadas. Para ter um melhor entendimento, temos um exemplo abaixo que ilustra o funcionamento do Linq. Vamos realizar uma consulta numa coleção de inteiros, buscando somente os números pares:
int[] numbers = new int[7] { 0, 1, 2, 3, 4, 5, 6 };
var numQuery = from num in numbers
where (num % 2) == 0
select num;
foreach (int num in numQuery)
{
Console.Write(“{0,1} “, num);
}
Como o desenvolvimento é constante, é comum que uma entidade seja alterada, adicionando ou removendo campos, etc. Isso acarreta na alteração da estrutura do seu banco de dados. Sem o Migrations, era necessário manualmente excluir a tabela que era referenciada ao modelo e recriá-la. Com o Migrations, esse processo é automático, os scripts SQL são automaticamente conforme o código é alterado.
Dentro do Visual Studio, você pode optar por duas formas de adicionar a referência do pacote do framework ao seu projeto. A primeira, via Nuget, basta clicar com o botão direito em References, selecionar Manage Nuget Packages… e buscar por Entity Framework.
Pelo console, basta digitar
Install-Package EntityFramework
Vamos criar uma ConsoleApplication para testar o Entity Framework. No Visual Studio, crie um novo projeto do tipo ConsoleApplication e adicione a referência do Entity Framework.
Feito isso, vamos criar nossa classe exemplo:
public class Doce
{
public int Id { get; set; }
public string Nome { get; set; }
}
No nosso Program.cs, vamos testar o nosso objeto:
class Program
{
static void Main(string[] args)
{
Doce doce01 = new Doce();
doce.Id = 1;
doce.Nome = “Chocolate”;
Console.WriteLine(“{0} – {1}”, doce01.Id, doce01.Nome);
Console.ReadKey();
}
}
Rodando isto, será impresso na tela o ID e o Nome do doce.
Agora vamos fazer o Entity trabalhar. Primeiro, vamos criar uma Connection String.
No App.Config, vamos adicionar a ConnectionString DbDoce com atributo
data source=.\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=DbProduto
Isto irá referenciar ao Entity o nosso banco que será criado (DbDoce), utilizando SQLExpress e a autenticação do Windows para este exemplo. Feito isso, vamos criar o contexto.
Adicione uma nova classe chamada DbDoce.cs. Esta classe irá herdar do objeto DbSet e fará toda a abstração da camada de banco de dados. Dentro desta classe, iremos adicionar uma propriedade do tipo DbSet chamada doces
public class DbDoce : DbContext
{
public DbSet Doces { get; set; }
}
Agora, voltando para a Program.cs, vamos colocar em prática tudo isto. Vamos criar um objeto chamado banco, do tipo DbDoce. Vamos instanciar o objeto e adicionar o nosso objeto doce à ele. Feito isso, é necessário comittar essa alteração usando o método do Entity Framework chamado SaveChanges().
class Program
{
static void Main(string[] args)
{
DbDoce banco = new DbDoce();
Doce doce01 = new Doce();
doce01.Id = 1;
doce01.Nome = “Chocolate”;
banco.Doces.Add(doce01);
banco.SaveChanges(); //Commitar no banco de dados
}
}
Pronto. A partir do momento em que esta aplicação for rodada, o banco (caso não exista) será criado, a tabela será criada e o registro será inserido. Tudo isso feito sem precisar executar uma linha de SQL, apenas desenvolvendo a aplicação.
Vamos verificar o registro inserido pela aplicação. Para fazer uma consulta, vamos usar um objeto de lista do tipo IENUMERABLE de objetos do tipo Doce. Vamos usar um método da biblioteca Linq chamado First para pegar o primeiro item da lista e imprimir na tela.
class Program
{
static void Main(string[] args)
{
DbDoce banco = new DbDoce();
Doce doce01 = new Doce();
doce01.Id = 1;
doce01.Nome = “Chocolate”;
banco.Doces.Add(doce01);
banco.SaveChanges(); //Commitar no banco de dados
IEnumerable<Doce> produtos = banco.Doces.ToList();
Console.WriteLine(“Doce: {0} – {1}”, produtos.First().Id, produtos.First().Nome);
Console.ReadKey();
}
}
Está feito!