C# - Cadastro de Clientes com Entity Framework em Camadas - I


Hoje em dia trabalhar com banco de dados relacional ficou mais fácil. Antes era preciso muito código para realizar as operações básicas de acesso e manutenção de dados, as famosas operações CRUD; hoje em dia temos uma infinidade de ferramentas que facilitam esse trabalho.

No momento a sensação são as ferramentas ORM; Uma ferramenta de mapeamento objeto relacional ou ORM é uma ferramenta que ajuda a simplificar a criação de camada de acesso a dados, automatiza o acesso aos dados, também gera código de acesso a dados e realiza de forma automática o mapeamento entre os dados e os objetos.

O Mapeamento objeto-relacional (ORM, O/RM, e Mapeamento O/R) é uma técnica de programação para conversão e mapeamento de dados entre os bancos de dados relacionais e as linguagens de programação orientada a objetos. As ferramentas ORM criam um "banco de dados objeto virtual" que pode ser usado a partir da linguagem de programação de forma transparente para o usuário. Hoje em dia temos centenas de ferramentas ORM.

Para você ver que não estou mentindo segue abaixo uma relação de ferramentas ORM para a plataforma .NET:

Não foi por acaso que a primeira ferramenta ORM da lista é o Entity Framework da Microsoft pois vamos usá-lo neste artigo para criar um projeto de cadastro de clientes com uma camada de acesso a dados para mostrar o quanto é simples usar os recursos dessa ferramenta ORM.

Eu vou usar somente ferramentas gratuitas no projeto como:

Embora eu já tenho escrito muitos artigos sobre o Entity Framework (veja a seção no site) neste artigo eu volto a mostrar como podemos usar o Entity Framework em uma camada de acesso a dados separada da camada de apresentação.

Com a adoção das boas práticas no desenvolvimento de software ganhamos tempo e dinheiro e nesta aplicação eu mostro como é fácil criar uma camada de acesso a dados usando o Entity Framework.

Nosso objetivo é manter um cadastro de clientes onde temos uma tabela chamada Clientes no banco de dados SQL Server chamado Cadastro.mdf;

Na figura abaixo vemos o Banco de dados Cadastro.mdf e a tabela Clientes com os campos : id, nome, endereco, cep, cidade, celular, telefone, email, contato e obs;

Podemos ver também o formulário de cadastro da aplicação onde temos basicamente os controles TextBox , Buttons e um DataGridView;

Criando a solução e os dois projetos

Vamos criar a solução no Visual C# 2010 Express Edition para isso abra a ferramenta e no menu File-> New Project selecione o template Windows Forms Application e informe o nome EF4_Crud_DAL e clique OK;

A seguir menu File -> Add -> New Project selecione o template Class Library, informe o nome DAL e clique no botão OK;

Após isso clique com o botão direito sobre o nome do projeto EF4_Crud_DAL (não na solução) e altere o seu nome para UI (User Interface) pois este projeto conterá a nossa camada de interface;

A estrutura da solução contendo os dois projetos pode ser vista na figura abaixo:

Vamos incluir um Entity Data Model no projeto DAL, para isso clique com o botão direito do mouse sobre este projeto e selecione Add New Item;

O Entity Data Model (EDM) ou modelo de entidades de dados pode ser considerado o coração da Entity Framework.

O EDM é um modelo entidades - relacionamentos onde:

  • Entidades - são instâncias de tipos de entidades como Clientes, Produtos os quais estão estruturados em registros e chaves;
  • Relacionamentos - são instâncias de tipos de relacionamentos que são associações entre dois ou mais tipos de entidades;

É a partir do modelo de entidades que podemos escrever código usando as diferentes APIs, como o provedor EntityClient ou o Object Services com LINQ to Entities

Na janela Add New Item selecione o template ADO .NET Entity Data Model, informe o nome Clientes.edmx e clique no botão Add;

Na próxima janela selecione a opção Generate from database, pois vamos gerar o modelo de entidades a partir de um banco de dados existente, e clique em Next>;

Na janela Entity Data Model do assistente verifique se a conexão com o banco Cadastro.mdf esta selecionada (se não existir você deverá criar clicando no botão New Connection);

Aceite os nomes que foram sugeridos pelo assistente, dessa forma o nome CadastroEntities será o nome do seu container do modelo de entidades e o arquivo de configuração App.Config terá a entity connection que será usada para realizar a conexão com o banco de dados;

Se o assistente mostrar uma janela perguntando se você quer copiar o arquivo para o seu projeto e salvar a conexão clique no botão No;

Em seguida selecione a tabela para qual deseja gerar o mapeamento. No exemplo eu estou usando apenas a tabela Clientes;

Para encerrar Clique em Finish;

Encerrando essa etapa veremos na janela Solution o arquivo Clientes.edmx e no descritor a entidade Cliente mapeada pelo EDM;

O Entity Data Model é um conceito e o Entity Framework possui uma implementação particular deste modelo que é percebida como um arquivo EDMX em tempo de desenvolvimento. Em tempo de execução o arquivo EDMX é tratado em três arquivos XML separados cada um com um papel definido:

Abaixo temos uma figura que mostra cada um destes arquivos que representam o arquivo .edmx:

Dessa forma com o Entity Data Model criado temos todo o código que necessitamos (o que também não necessitamos) gerado e estamos prontos para poder definir os nossos métodos para acesso a dados com base no EDM.

Obs: A partir do Entity Framework 4.0 podemos usar classes POCO e não depender mais exclusivamente do EDM.

Veja a segunda parte em : C# - Cadastro de Clientes com Entity Framework em Camadas - II

Referências:

José Carlos Macoratti