VB .NET - Curso Prático ADO .NET - Módulo de Administração : Usando o Entity Framework - I


Vamos continuar o nosso curso prático sobre ADO .NET usando a linguagem VB .NET onde na primeira parte desenvolvemos uma pequena aplicação para uma revenda de filmes.

O público alvo do curso são programadores que estão iniciando com a linguagem VB .NET e portanto iremos dar um tratamento a nível básico a intermediário.

Nesta segunda parte iremos tratar do desenvolvimento do módulo de administração da aplicação onde somente os funcionários e o gerente da loja terão acesso para realizar as tarefas de manutenção e gerenciamento dos dados.

Vamos desenvolver outro projeto Windows Forms onde o você aprenderá como criar uma aplicação VB .NET e utilizar os recursos do Entity Framework 5.0 para acessar e persistir as informações no banco de dados SQL Server.

Assim temos que o administrador/funcionário da empresa poderá usar este aplicativo para realizar as seguintes tarefas:

A aplicação também será um projeto Windows Forms desenvolvida usando o Visual Basic .NET e a tecnologia Entity Framework. Este aplicativo acessa todos os os dados dos clientes e detalhes específicos dos filmes em um banco de dados Microsoft SQL Server. Este banco de dados é o mesmo banco de dados usado no módulo do cliente.

Dessa forma os funcionários e os administradores do sistema da empresa usarão o módulo Administração para manter o banco de dados atualizado realizando o cadastramento de atores, diretores, filmes, etc.

Os seguintes requisitos serão abordados pelo módulo de Administração:

Apresentando o Entity Framework

O Entity Framework - EF, é um conjunto de tecnologias da ADO .NET que suporta o desenvolvimento a aplicações orientadas a dados. Arquitetos e desenvolvedores de aplicações orientadas a dados tem se debatido com a necessidade de alcançar dois objetivos distintos:

O problema é que os dados podem estar distribuídos em múltiplos sistemas de armazenamentos, cada um com suas particularidades e protocolos e mesmo em situações no qual somente um único sistema de armazenamento é usado ainda a existe a necessidade de balancear os requisitos de armazenamento com os requisitos de escrever um código eficiente.

O Entity Framework - EF, permite aos desenvolvedores trabalhar com dados na forma de propriedades e objetos específicos do domínio como clientes e produtos, etc, sem ter que relacioná-los com as tabelas do banco de dados e as colunas onde os dados estão armazenados. Isto é possível pela elevação do nível de abstração no qual os desenvolvedores podem trabalhar quando estão tratando com os dados e pela redução do código que é necessário para manter as aplicações orientadas a dados.

O Entity Framework é um componente da .NET Framework e pode ser usado em qualquer ambiente no qual estejam instalados o .NET Framework.

O Entity Framework renova o modelo conceitual permitindo que os desenvolvedores consultem entidades e relacionamentos neste modelo enquanto contam com o suporte da Entity Framework para traduzir estas operações para comandos específicos da fonte de dados liberando as aplicações das dependências de código específicas de uma fonte de dados particular.

Um padrão muito usado para modelagem de dados divide o modelo de dados em 3 partes:
  • O modelo Conceitual - Define as entidades e relacionamentos do sistema modelado;
  • O modelo Lógico - Normaliza as entidades relacionamentos entre as tabelas com chaves primárias e constraints para os banco de dados relacionais;
  • O modelo Físico - Análise e aplica as capacidades de um sistema de armazenamento específico definindo detalhes de armazenamento como particionamento e indexação;

O modelo conceitual, o modelo de armazenamento e o mapeamento entre os dois são expressos em uma especificação externa chamada de Entity Data Model-EDM.

O Entity Data Model é um modelo de dados Entidade-Relacionamento cujo conceito central são as entidades e os relacionamentos, onde Entidades são instâncias de Tipos de entidades como Cliente, Produto, Categoria as quais são estruturas de registros com uma chave. Um Chave de Entidade é formada a partir de um subconjunto de propriedades do Tipo da entidade. A chave (clienteID, ProdutoID, etc) é um conceito fundamental para identificar de forma única , atualizar instâncias e permitir que as instâncias de entidades participem nos relacionamentos.

Além do Entity Data Model , o Entity Framework inclui serviços que incrementam o poder do modelo incluindo o provedor gerenciado EntityClient, ObjectServices e LINQ to Entities conforme mostrado na figura abaixo:

Object Services é um componente do Entity Framework que permite que você realize consultas, inclusões, atualizações e exclusões de dados , expressos como um objetos CLR fortemente tipados que são instâncias de tipos de entidades.

O Object Services da suporte a consultas  LINQ e Entity SQL  contra tipos que são definidos em um EDM.

O Object Services também materializam os dados retornados como objetos e propagam as alterações dos objetos de volta a fonte de dados, além de fornecer facilidades para tratar alterações, vinculação de controles a objetos e efetuar o tratamento da concorrência.

Obs: Entities são instâncias de Entity types e representam instâncias individuais de objetos (Clientes, Produtos)

Um Entity Data Model - EDM é definido pelos seguintes arquivos de modelo e mapeamento:

Abaixo temos as camadas do Entity Data Model  e o seu relacionamento :

fonte: http://www.code-magazine.com/article.aspx?quickid=0711051

O Entity Framework utiliza estes modelos baseados em XML e arquivos de mapeamento para transformar operações de  criar, ler, atualizar, e deletar contra entidades e relacionamentos no modelo conceitual para operações equivalentes na fonte de dados.

Mais do que um outra solução de mapeamento objeto relacional o Entity Framework esta fundamentado na capacidade de permitir que aplicações acessem e alterem dados que estão representados como entidades e relacionamentos no modelo conceitual. O  Entity Data Model-EDM é então usado para traduzir consultas de objetos contra tipos de entidades que são representados no modelo conceitual em consultas específicas da fonte de dados. O EF fornece as seguintes formas de consultar um EDM e retornar objetos:

O Entity Framework também inclui um provedor de dados EntityClient que gerencia conexões, traduz consultas de entidades em consultas específicas da fonte de dados e retorna um leitor de dados que os Serviços de Objeto usam para materializar os dados de entidades em objetos. Quando a materialização em objetos não é necessária o provedor EntityClient  também pode ser usado como um provedor de dados ADO .NET padrão permitindo que aplicações executem consultas Entity SQL e consumam os dados retornados como um leitor somente-leitura.

A Entity SQL é uma variação da SQL e foi criada com objetivo de escrever consultas declarativas e atualizações sobre entidades e relacionamentos de entidades no nível conceitual.  A Entity SQL  vai além da SQL pois da suporte aos seguintes recursos:
  • Types, que são como entidades ADO.NET , totalmente tipados;
  • EntitySets,  que são tratados como uma coleção de entidades;
  • Composability, que remove restrições onde as sub-consultas podem ser usadas;

Junto com o runtime do Entity Framework a plataforma .NET inclui um gerador Entity Data Model (EdmGen.exe); um utilitário de linha de comando que se conecta com a fonte de dados e gera um EDM baseado em um mapeamento um-para-um entre entidades e tabelas. Ela também usa o arquivo de definição de modelo conceitual (.csdl) para gerar uma camada de objeto que contém classes que representam tipos de entidades e o ObjectContext.

Com esta visão geral sobre o Entity Framework e Entity Data Model podemos começar a construir aplicações sobre uma nova perspectiva e com novos recursos fugindo um pouco do modelo tradicional que pouco mudou desde o lançamento da primeira versão da plataforma .NET.

A partir do Entity Framework poderemos  fazer o mapeamento para bases de dados como SQLServer, Oracle, DB2, MySql, PostgreSQL, SQLite, VistaDB, Informix, Sybase, etc, bem como para outras fontes como XML, Texto e outros serviços.

Na próxima aula iremos iniciar a construção da aplicação Windows Forms usando os recursos do Entity Framework e gerar o nosso Entity Data Model.

             Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti