Entity Framework 6 - Aplicação em camadas - Definindo o modelo e criando a solução
Neste artigo vamos criar uma solução que acessa um banco de dados SQL Server usando uma camada de acesso a dados usando o padrão repositório e o Entity Framework 6. Vamos realizar a separação das classes do nosso modelo gerado no Entity Data Model de forma que a camada de apresentação não precise referenciar o projeto onde temos o Entity Data Model. |
Você já deve conhecer os benefícios de utilizar uma arquitetura em camadas em seu projeto. Não tenha dúvidas, para a maioria dos cenários onde temos que acessar um banco de dados relacional, a arquitetura em camadas é um dos melhores padrão de projeto para o desenvolvimento de software.
Em uma arquitetura em camadas temos a separação das responsabilidades do nosso código pela formação de diferentes camadas como : Camada de Apresentação, Camada de Negócios, Camada de Serviços, Camada de Entidades e Camada de Acesso a dados.
Geralmente em uma arquitetura em camadas a camada de negócios (BLL - Businnes Logic Layer) acessa diretamente os dados a partir da camada de acesso aos dados. Dessa forma nossa Camada de Acesso aos Dados (DAL - Data Access Layer) esta fortemente acoplada a várias fontes de dados e também à camada de negócios. Isso resulta em dificuldades para testar a camada de negócios aumentando o trabalho para isolar a camada de dependências externas e pode levar a erros.
Uma solução é utilizar um repositório entre as camadas de negócio e a de acesso a dados. Quando usamos o Entity Framework, muitas vezes definimos um acesso público ao nosso modelo de entidades para facilitar sua utilização mas isso dá o acesso direto ao nosso modelo de dados ao mundo externo, e, de acordo com as boas práticas, a fonte de dados não deveria ser diretamente visível a camada de negócios e por isso o padrão repositório entra em cena.
O padrão repositório encapsula as fontes de dados ou modelo de dados e permite o acesso ao banco de dados através de métodos genéricos.
É isso que iremos mostrar e construir nessa série de artigos usando uma abordagem DataBase First. Então ao trabalho...
Recursos usados
Definindo o modelo de dados
Neste artigo eu vou usar o Entity Framework e a abordagem DataBase First e neste caso vamos usar o banco de dados Cadastro.mdf do SQL Server 2012 Express.
Podemos usar as seguintes abordagem com o Entity Framework :
1 - Code First - Criamos classes POCO que são mapeadas para as entidades;
2 - Database First - Mapeamos para um Banco de dados que já existe;
3 - Model First - Criamos o Modelo conceitual primeiro e depois é gerado o script para criar o banco de dados;
|
Neste banco de dados vamos usar as tabelas Departamentos e Empregados que possuem as seguintes estruturas:
Departamentos | |
Empregados |
Temos aqui um relacionamento Um-para-Muitos entre a tabela Departamentos e a tabela Empregados:
Criando a solução e a camada de acesso a dados - DAL
Abra O Visual Studio 2013 Express for Windows desktop e clique em Visual Studio Solutions e a seguir em Blank Solution;
Informe o nome da solução como EF6_Repositorio e clique no botão OK;
Agora vamos criar um novo projeto em nossa solução. Clique no menu FILE e a seguir em Add -> New Project;
Selecione a linguagem C# e o template Class Library e informe o nome DAL. A seguir exclua o arquivo Class1.cs criado por padrão.
Vamos criar um Entity Data Model no projeto DAL. Selecione o projeto e Clique em PROJECT -> Add New Item;
Selecione a guia Data e o template ADO .NET Entity Data Model, informe o nome Cadastro e clique no botão Add;
No assistente selecione a opção EF Designer from database e clique no botão Next>;
Selecione a conexão com o banco de dados Cadastro.mdf (Se ele ainda não existir clique em New Connection e defina a conexão);
Aceite as configurações do assistente que salva a string de conexão no arquivo App.Config e cria o contexto CadastroEntities;
Clique no botão Next>;
Selecione a opção Entity Framework 6.x e clique no botão Next>;
A seguir selecione as tabelas Departamentos e Empregados e marque as opções conforme a figura abaixo clicando no botão Finish para concluir essa etapa:
Será gerado o modelo de entidades conforme a figura abaixo:
Temos aqui as entidades Departamento e Empregado mapeadas para as respectivas tabelas.
Note que no Entity Data Model - Cadastro.edmx podemos ver as classes :
Do contexto - Cadastro.Context.cs
Das entidades - Departamento.cs e Empregado.cs
Nossa próxima tarefa será separar as entidades Cadastro.cs, Departamento.cs e Empregado.cs do modelo de entidades - Cadastro.edmx.
E porque temos que fazer isso ?
Fazendo isso poderemos usar essas entidades nas diferentes camadas da nossa solução.
Além disso é uma boa prática ter a nossa lógica de domínio separada da camada de acesso a dados.
Dessa forma não precisaremos referenciar a camada DAL na camada de apresentação.
Então vamos criar um novo projeto chamado Model em nossa solução e mover as classes da nossa lógica de domínio para este projeto.
Clique no menu FILE e a seguir em Add -> New Project;
Selecione a linguagem C# e o template Class Library e informe o nome Model. A seguir exclua o arquivo Class1.cs criado por padrão.
Para concluir vamos incluir uma referência do projeto Model no projeto DAL.
Clique com o botão direito do mouse sobre o projeto DAL e em Add Reference;
A seguir selecione a guia Solution e marca o projeto Model:
Na próxima parte do artigo iremos separar as classes das entidades do EDMX.
Lucas 8:20 E foi-lhe dito: Estão lá fora tua mãe e teus irmãos, que querem ver-te,
Lucas 8:21 Mas, respondendo ele (Jesus), disse-lhes: Minha mãe e meus irmãos são aqueles que ouvem a palavra de Deus e a executam.
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências: