Entity Framework -  Table Splitting (Divisão de tabelas) com Code First

Uma das grandes vantagens em usar o ORM Entity Framework é que o seu modelo de entidades não tem que coincidir com o seu modelo de banco de dados. Uma das maneiras de fazer isso é usar o recurso Table Splitting (Divisão de Tabela) que consiste em ter duas entidades em seu modelo mapeadas para a mesma tabela de banco de dados físico.

Vejamos o seguinte exemplo de divisão de tabela:

1- Você tem uma tabela Produtos que contém colunas para tratar com uma grande quantidade de dados. A tabela possui além das informações de nome, preço, descrição, informações sobre as imagens do produto: Imagem de lado e Imagem Frontal.

Para a maioria das operações com a tabela Produtos você não deseja ter que tratar com as informações da imagem do produto. Não queremos retornar informações da imagem quando formos consultar apenas pelo nome e preço do produto. Além disso tratar essas informações consomem mais recursos do sistema eu você gostaria de tratá-las somente em momentos específicos.

Essa é a deixa para usar o recurso Table Splitting com o Entity Framework.

Recursos Usados

Criando o projeto

Abra o VS 2013 Express for Windows Desktop e clique em New Project;

Selecione a linguagem Visual Basic e o template Console Application e informe o nome EF_TableSplitting;

A seguir clique no menu  TOOLS e em Library Package Manager -> Manage Nuget Packages for Solution

A seguir clique na guia Online e na caixa de pesquisa digite EntityFramework;

Localize o pacote para o EntityFramework e clique no botão Install, confirmando e aceitando a instalação;

No menu PROJECT clique em Add New Item e selecione o template ADO .NET Entity Data Model e informe o nome Produtos.edmx:

Na próxima janela selecione Generate from DataBase e clique no botão Next>;

Selecione a conexão com o banco de dados que contém a tabela Produtos e clique em Next>;

Selecione a tabela Produtos para gerar o modelo de entidades conforme a figura abaixo:

Vamos agora modificar o modelo de forma a obter duas entidades a partir da entidade Produto.

1- Clique com o botão direito do mouse sobre a entidade Produto e selecione Copy;

2- A seguir clique com o botão direito do mouse sobre uma área vazia do descritor e selecione Paste;

3- A seguir selecione a entidade copiada e clique com botão direito do mouse e selecione Rename alterando o seu nome para ProdutoImagens;

4- Delete as propriedades imagemFrontal e imagemLateral da entidade Produto;

5- Delete as propriedades nome, descricao e preco da entidade ProdutoImagens;

6- Inclua uma associação 1 : 1 entre as duas tabelas;

7- Ao final dessa etapa deveremos obter o seguinte resultado no modelo de entidades :

Mapeando o modelo de entidades

Clique com o botão direito do mouse sobre a área vazia do descritor e selecione Mapping Details;

Selecione a tabela Produtos na caixa de listagem <Add a Table or View> ;

O resultado será o mapeamento para a entidade ProdutoImagens:

Antes de prosseguir selecione a tabela Produto e verifique o seu mapeamento:

Agora clique com o botão direito do mouse sobre a associação entre as entidade e clique em Properties;

Na janela Properties selecione Referential Constraint ;

Na janela Referential Constraint selecione a entidade Produto em Principal;

Finalmente clique no botão OK.

Pronto ! Concluímos o Table Splitting onde agora temos duas entidades mapeadas para a mesma tabela.

As consultas agora serão otimizadas para obter informações a partir do modelo de entidades somente do que nos interessa economizando assim recursos do sistema.

João 1:18 Ninguém jamais viu a Deus. O Deus unigênito (Jesus), que está no seio do Pai, esse o deu a conhecer.

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

 

             Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter
 

Referências:


José Carlos Macoratti