Fundamentos do Entity Framework 4

Do Carlos dos Santos

Maio, 2012

JJ128157.060DE5057573180CEC6D227C6D3E2207(pt-br,MSDN.10).png

O que é o Entity Framework

O Microsoft Entity Framework é uma ferramenta de mapeamento objeto relacional (ORM – Object Relational Management), que permite aos desenvolvedores trabalhar com classes (entidades) que correspondem a tabelas em um banco de dados, tornando transparente o acesso a estes dados e principalmente, eliminando a necessidade de escrever código de banco de dados (SELECT, INSERT, UPDATE, DELETE) na aplicação. Com o Entity Framework os desenvolvedores manipulam os dados através de classes que são mapeadas com as tabelas do banco de dados, sendo assim, o acesso e manipulação destes dados fica mais simples, pois o desenvolvedor já trabalha naturalmente com objetos, propriedades e coleções no seu desenvolvimento.

A comunicação do Entity Framework com o banco de dados é feita através do ADO.Net Provider, que funciona como um “driver” do banco de dados, normalmente desenvolvido pelo próprio fabricante do banco, ou em alguns casos por um terceiro. Sendo assim, todos os comandos submetidos pelo Entity Framework são “traduzidos” para a linguagem do banco de dados através do seu provider, gerando os comandos SQL mais adequados a cada operação e principalmente, comandos que tenham o máximo de desempenho. Na Figura 1 vemos um diagrama do funcionando do Entity Framework.

JJ128157.014931952CB9646555317EE951DB5F96(pt-br,MSDN.10).png

A grande vantagem deste modelo é trabalhar com a Linguagem de consulta LINQ, que será utilizada para realizar todas as operações com o banco de dados. Vejamos um exemplo de consulta simples de dados usando o Ado.Net tradicional:

SqlConneciton conexao = new SqlConneciton(@"data source=(local); initial catalog=northwind; user id=teste; password=teste;");
SqlCommand comando = new SqlCommand("select * from categories", conexao);

try
  {
conexao.Open();
SqlDataReader reader = comando.ExecuteReader();

if (reader != null)
{
while (reader.Read())
{
    Console.WriteLine(reader["Categoryname"].ToString());
}
reader.Close();
}
}
catch (Exception)
{
throw;
}
finally
{
conexao.Close();
}

Neste modelo precisamos abrir uma conexão com o banco de dados, criar um comando SQL, no caso um “Select”, abrir a conexão, executar o comando e fechar a conexão. No exemplo acima o resultado seria uma lista com todas as categorias do banco de dados NorthWind.

Agora vamos analisar a mesma operação usando Entity Framework:

NorthwindEntities dc = new NorthwindEntities();
var dados= from c in dc.Categories select c;

foreach (var categ in dados)
{
     Console.WriteLine(categ.CategoryName);
}

Basicamente precisamos instanciar um objeto de contexto, que é onde fazemos o mapeamento objeto relacional, depois usamos Linq para realizar uma consulta e finalmente mostramos o resultado. O resultado é o mesmo do exemplo anterior, mas agora não precisamos abrir a conexão com o banco de dados, nem saber qual “select” precisaríamos e também o fechamento da conexão foi totalmente gerenciado pelo Entity Framework. Outro grande benefício é o intellisense, que ajuda a identificar os nomes das tabelas e também dos campos. Isto evita muitos erros de digitação, que normalmente provocam vários erros na aplicação. Veja abaixo:

JJ128157.29BD3512E9305BD83619299E379E3558(pt-br,MSDN.10).png

Já vimos alguns benefícios do mapeamento objeto relacional, mas existem muitos outros e talvez o mais procurado é tornar a sua aplicação multi banco de dados, ou seja, qualquer que seja o banco de dados utilizado, meu código sempre será o mesmo. Hoje o Entity Framework funciona para a maioria dos bancos de dados existentes no mercado e você pode conferir a lista dos bancos suportados neste link: http://msdn.microsoft.com/en-us/data/dd363565.aspx. Existe também uma empresa chamada DevArt que desenvolveu uma ferramenta que permite ao Entity Framework se conectar a diversos bancos de dados e isto é uma excelente alternativa quando seu banco de dados não é suportado diretamente, veja neste link o componente da DevArt: www.devart.com/dotconnect.


Criando um projeto com o Entity Framework

Agora que você já entendeu como funciona o Entity Framework vamos ver como é possível iniciar um projeto e adicioná-lo para começarmos a trabalhar. Isto é bem simples e vamos iniciar abrindo o Visual Studio 2010 e criando um projeto Console. Você também pode adicionar o Entity Framework a qualquer projeto do Visual Studio:

JJ128157.87BE95C4FAC780D5FE5FB05C1D48EBDB(pt-br,MSDN.10).png

Após isto iremos adicionar o Entity Framework clicando com o botão direito do mouse no Solution Explorer, em cima do nome da sua solução, e depois em Add/New:

JJ128157.8EBB01AFACF6F8CB941EE53F98571586(pt-br,MSDN.10).png

Na janela Add New Item, escolha “ADO.Net Entity Data Model”, que é o template para a criação do Entity Framework. É uma boa prática também dar um nome para o seu modelo de acordo com o nome do seu banco de dados. Agora teremos basicamente duas opções: “Generate from DataBase” e “Empty model”. A primeira opção você utiliza quando já tiver um banco de dados, assim o Entity Framework irá fazer todo o mapeamento para você. Caso você ainda não tenha o banco de dados, use a segunda opção e crie o mapeamento manualmente.

Vamos inicialmente criar um modelo em branco, então você deverá escolher a segunda opção (Empty model) e o resultado será este:

JJ128157.EE4426D2569A18AED588A3A4E44F4965(pt-br,MSDN.10).png

Veja que você tem o Designer do Entity Framework em branco e na ToolBox exitem algum objetos que podemos utilizar. Entity serão nossas classes e no banco de dados serão nossas tabelas. Association são os relacionamentos entre as entidades e também os relacionamentos no banco de dados, ou seja: um para um, um para muitos e muitos para muitos.

Vamos adicionar uma entidade ao nosso modelo colocando o nome de Grupo, com os campos: Id e Nome. Para mudar o nome da entidade basta clicar com o mouse sobre o nome do objeto e para adicionar uma propriedade, clique com o botão direito do mouse e escolha Add/Scalar Property. Iremos adicionar também juma entidade chamada Produto com os campos: Id, Nome, IdGrupo, Custo, Venda e Saldo. Observe que você pode abrir as propriedades de cada campo e modificar de acordo com sua necessidade, por exemplo, o tipo de dado do campo:

JJ128157.F8993CD4B683116DA518A6975F1BE6B2(pt-br,MSDN.10).png

Veja que os tipos de campos são referentes a linguagem, no caso C#, e não ao banco de dados. O Entity Framework é quem vai se encarregar de resolver o tipo de dado correto com o seu banco de dados.

Agora nosso modelo já tem as duas entidades e vamos criar o relacionamento entre elas. Pra isto vamos pagar o item Association da toolbox e clicar primeiramente no Grupo e depois no Produto, assim criamos o relacionamento conforme a figura abaixo:

JJ128157.D4459FE71D7DC7F9891EFE266BCF9C7F(pt-br,MSDN.10).png

Vamos agora clicar dar um duplo clique no relacionamento e ajustar as propriedades conforme a figura abaixo:

JJ128157.C97E0FA40103E71B66223F72BE067D84(pt-br,MSDN.10).png

Você pode ajustar outros propriedades do relacionamento e também o tipo de relacionamento através da janela de propriedades da associação:

JJ128157.826B58A6B98D2449EAE5369001FD7691(pt-br,MSDN.10).png

Tipos de Mapeamento do Entity Framework

No exemplo acima assumimos que você ainda não tinha um banco de dados criado, este mapeamento se chama Model First, ou seja, primeiro você cria o modelo e depois o banco de dados.

Se você já tiver o banco de dados, então iremos usar o DataBase First, assim o Entity Framework irá fazer o mapeamento de todas as tabelas do seu banco de dados para o modelo.

Finalmente existe o Code First, que não iremos abordar neste treinamento, mas neste modelo, você cria todas as classes no código, sem o designer visual, e depois o banco de dados é criado baseado nas classes.

Conclusão

Vimos que o Entity Framework é uma ferramenta excelente para trabalharmos com objetos ao invés de acessar o banco de dados, seja pela facilidade em manipular os dados ou pela flexibilidade em se trabalhar com vários bancos de dados. Assista aos vídeos do módulo e leia os artigos, assim você terá um excelente ponto de partida para começar a criar sua solução baseada em Entity Framework. Caso você tenha dúvidas durante o processo de desenvolvimento, participe dos fóruns do MSDN que com certeza você obterá a ajuda que necessita.

JJ128157.80A5682C42DBDDD76F302471A33DCAF0(pt-br,MSDN.10).pnghttps://www.microsoftvirtualacademy.com/tracks/fundamentos-do-entity-framework-4


Mostrar: