Entendendo o Entity Framework

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.

Começando: O que é ORM?

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.

Como funciona o Entity Framework

O Entity Framework permite que o desenvolvimento seja focado nas regras do negócio, abstraindo a camada de banco de dados.

entity-framework

Existem 3 formas de se trabalhar com o Entity Framework:

  • Database-First: O banco de dados já existe, as classes (entidades) são criadas baseadas nele;
  • Model-First: O banco de dados não existe, é criado um modelo conceitual e através dele é gerado um script para a criação;
  • Code-First: Talvez a forma que melhor utiliza os recursos do Entity Framework. O banco de dados ainda não existe, são criadas as classes simples, através delas toda a lógica da entidade é criada e com este modelo é gerado o banco de dados.

Utilizando LINQ para lidar com a massa de dados

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:

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

Migrations

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.

Adicionando o Entity Framework ao seu projeto

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

1
Install-Package EntityFramework

Começando um exemplo básico

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:

1
2
3
4
5
public class Doce
{
public int Id { get; set; }
public string Nome { get; set; }
}

No nosso Program.cs, vamos testar o nosso objeto:

1
2
3
4
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

1
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

1
2
3
4
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().

1
2
3
4
5
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.

1
2
3
4
5
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!

CTA-ebook-transformação-digital

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>