Entity Framework - Apresentação e Arquitetura - (Início do Curso)


 Afinal o que é o Entity Framework ?

Resposta oficial da Microsoft :

"A Microsoft ADO.NET Entity Framework é um framework de mapeamento Objeto/Relacional (ORM) que permite aos desenvolvedores trabalhar com dados relacionais como objetos específicos de domínio, eliminando a necessidade da maior parte do código de acesso de dados de que os desenvolvedores geralmente precisam escrever. Usando o Entity Framework, os desenvolvedores realizam consultas utilizando o LINQ, em seguida, recuperam e manipulam dados como objetos fortemente tipados. A Implementação do ORM Entity Framework fornece serviços como controle de alterações, resolução de identidade, lazy loading, tradução de consultas, etc. de forma que os desenvolvedores podem se concentrar na lógica de negócios da sua aplicação ao invés de nos fundamentos de acesso a dados."

Simplificando, podemos dizer que: O Entity Framework é um framework O/RM que realiza o mapeamento Objeto/Relacional(O/RM) partindo do modelo relacional de dados e gerando classes que representam as entidades do domínio.

Mas o que é um framework O/RM e por que precisamos dele?

Um framework ORM é uma ferramenta para o armazenamento de dados a partir de objetos de domínio em um banco de dados relacional como o MS SQL Server de forma automatizada.

Uma ferramenta O/RM inclui três partes principais:

1- Objetos de classe de domínio ,
2- Objetos de banco de dados relacionais
3- Informações de mapeamento de como objetos de domínio são mapeados para os objetos de banco de dados relacionais(tabelas,visões e StoredProcedures).

Uma ferramenta ORM nos ajuda a manter nosso projeto de banco de dados separado do nosso projeto de classe de domínio. Isso faz com que a aplicação seja sustentável e extensível. Ele também automatiza as operações CRUD padrão(Criar,Ler,Atualizar e Excluir) para o desenvolvedor não precisar escrever o código manualmente.

Dessa forma 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.

Nota: Existem diversos frameworks ORM no mercados sendo os principais :  DataObjects.Net, NHibernate, OpenAccess, SubSonic etc.

O Entity Framework é uma ferramenta ORM Open Source da Microsoft.

Para você se situar, na tabela a seguir temos uma apresentação de cada versão do EF e seus principais recursos:

Versão Principais Recursos
EF 3.5 Suporte a O/RM básico com a abordagem Database First.
EF 4.0 Suporte a POCO, Lazy loading, melhoria na testabilidade, geração de código customizada e a abordagem Model First.
EF 4.1 Disponibilizado também via pacote NuGet, API DBContext Simplificada ao invés de ObjectContext, abordagem Code First. (Correção de bugs com a versão EF 4.1.1) 
EF 4.3 Recurso Code First Migrations que permite que um banco de dados criado via Code First ser gradativamente alterado conforme o modelo Code First evoluir. Liberação da versão EF 4.3.1 para correção de bugs do EF 4.3.
EF 5.0 Anunciado EF como Open Source. Apoio a Enum Introduzido, funções com valor de tabela, tipos de dados espaciais, vários diagramas por modelo, coloração de formas na superfície de projeto e importação de lote de procedimentos armazenados, EF Power Tools e várias melhorias de desempenho.
EF 6.0/6.1 Inclui muitos novos recursos relacionadas ao Code-First e ao descritor EF como consulta e persistência assíncrona, resilência da resolução de dependências, etc

Arquitetura do Entity 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:

A figura a seguir mostra uma visão geral da arquitetura do Entity Framework.

Vejamos a seguir cada um desses componentes.

Entity Data Model (EDM) : Consiste basicamente de três partes : o modelo conceitual, o mapeamento e o modelo de armazenamento.

O EDM é definido pelos seguintes arquivos de modelo e mapeamento:

Conceptual Model: É o seu modelo de classe e seus relacionamentos sendo independente do projeto das tabelas seu banco de dados.
Storage Model:
É o seu modelo de banco de dados o qual inclui as tabelas, views, procedimentos armazenados e seus relacionamentos e chaves;
Mapping:
Consiste em informação sobre como o seu Conceptual Model esta mapeado para o Storage Model.

LINQ to Entities - Fornece suporte as consultas LINQ para consultar tipos de entidades que são definidos no modelo conceitual;

Entity SQL - Uma dialeto SQL independente que trabalha diretamente com as entidades no modelo conceitual que suporta as características EDM como herança e relacionamento;

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. Ela vai além da SQL pois dá suporte aos seguintes recursos:

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.

EntityClient Data Provider : 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.

ADO.Net Data Provider - Esta camada se comunica com o banco de dados usando a ADO .NET padrão.

Na próxima aula vamos definir o banco de dados, tabelas,  procedimentos armazenados e views que iremos usar em nosso curso.

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