Exportar (0) Imprimir
Expandir Tudo
Este artigo foi traduzido manualmente. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original

Visão geral do Entity Framework

.NET Framework 4.5

O Entity Framework é um conjunto de tecnologias no ADO.NET que dão suporte ao desenvolvimento de aplicativos de software orientados a dados. Os arquitetos e desenvolvedores de aplicativos orientados a dados lutam com a necessidade de realizar dois objetivos muito diferentes. Precisam modelar as entidades, as relações e a lógica dos problemas de negócios que estão solucionando e também precisam trabalhar com os mecanismos de dados usados para armazenar e recuperar os dados. Os dados podem se estender por vários sistemas de armazenamento, cada um com seus próprios protocolos. Mesmo aplicativos que trabalhem com um único sistema de armazenamento devem balancear os requisitos do sistema de armazenamento com os requisitos de gravação eficiente e código de aplicativo que possa ser mantido.

O Entity Framework permite que os desenvolvedores trabalhem com dados na forma de objetos e propriedades específicos ao domínio, como clientes e endereços de clientes, sem precisar se preocupar com as tabelas e colunas do banco de dados subjacente onde esses dados são armazenados. Com o Entity Framework, os desenvolvedores podem trabalhar em um nível mais alto de abstração ao lidar com dados e podem criar e manter aplicativos orientados a dados com menos código do que em aplicativos tradicionais. Como o Entity Framework é um componente do .NET Framework, os aplicativos do Entity Framework podem ser executados em qualquer computador em que o .NET Framework a partir da versão 3.5 SP1 esteja instalado.

As seções a seguir deste tópico fornecem mais detalhes sobre o Entity Framework:

Uma abordagem de design antiga e comum ao criar um aplicativo ou serviço é a divisão do aplicativo ou serviço em três partes: um modelo de domínio, um modelo lógico e um modelo físico. O modelo de domínio define as entidades e as relações no sistema que está sendo modelado. O modelo lógico de um banco de dados relacional normaliza as entidades e relações em tabelas com restrições de chave estrangeira. O modelo físico aborda os recursos de um mecanismo de dados específico definindo detalhes de armazenamento, como o particionamento e a indexação.

O modelo físico é refinado pelos administradores de banco de dados para melhorar o desempenho, mas os programadores que escrevem código de aplicativos limitam-se principalmente a trabalhar com o modelo lógico escrevendo consultas SQL e chamando procedimentos armazenados. Os modelos de domínio geralmente são usados como uma ferramenta para capturar e comunicar os requisitos de um aplicativo, geralmente como diagramas inertes, que são exibidos e discutidos nas etapas iniciais de um projeto e em seguida abandonados. Muitas equipes de desenvolvimento ignoram a criação de um modelo conceitual e começam especificando tabelas, colunas e chaves em um banco de dados relacional.

O Entity Framework dá vida aos modelos para permitir que os desenvolvedores consultem as entidades e as relações no modelo de domínio (chamado de modelo conceitual no Entity Framework) contando com o Entity Framework para converter essas operações em comandos específicos à fonte de dados. Isso libera os aplicativos de dependências embutidas no código em uma fonte de dados específica. O modelo conceitual, o modelo de armazenamento e os mapeamentos entre os dois são expressos em esquemas baseados em XML e definidos em arquivos que têm extensões de nome correspondentes:

  • O CSDL (linguagem de definição de esquema conceitual) define o modelo conceitual. O CSDL é a implementação do Entity Framework do Modelo de Dados de Entidade. A extensão do arquivo é .csdl.

  • O SSDL (linguagem de definição de esquema de repositório) define o modelo de armazenamento, que também é chamado de modelo lógico. A extensão do arquivo é .ssdl.

  • O MSL (linguagem de especificação de mapeamento) define os mapeamentos entre o armazenamento e os modelos conceituais. A extensão do arquivo é .msl.

O modelo e os mapeamentos de armazenamento podem ser alterados quando necessário sem necessidade de alterações no modelo conceitual, nas classes de dados ou no código do aplicativo. Como os modelos de armazenamento são específicos ao provedor, você pode trabalhar com um modelo conceitual consistente entre várias fontes de dados.

O Entity Framework usa esse modelo e os arquivos de mapeamento para criar, ler, atualizar e excluir operações em entidades e relações no modelo conceitual para operações equivalentes na fonte de dados. O Entity Framework dá suporte até a entidades de mapeamento no modelo conceitual para procedimentos armazenados na fonte de dados. Para obter mais informações, consulte Especificações de CSDL, SSDL e MSL.

A programação orientada a objeto impõe um desafio para interagir com os sistemas de armazenamento de dados. Embora a organização das classes com frequência espelhe a organização de tabelas de banco de dados relacional, o ajuste não é perfeito. Com frequência, várias tabelas normalizadas correspondem a uma única classe, e as relações entre classes são representadas de maneira diferente de como as relações entre tabelas são representadas. Por exemplo, para representar o cliente para um pedido de venda, uma classe Order pode usar uma propriedade que contém uma referência a uma instância de uma classe Customer, enquanto uma linha da tabela Order em um banco de dados contém uma coluna (ou conjunto de colunas) de chave estrangeira com um valor que corresponde a um valor de chave primária na tabela Customer. Uma classe Customer pode ter uma propriedade denominada Orders que contém uma coleção de instâncias da classe Order, enquanto a tabela Customer em um banco de dados não tem nenhuma coluna comparável. O Entity Framework fornece aos desenvolvedores a flexibilidade de representar relações dessa maneira ou de modelar relações de maneira mais restrita conforme são representadas no banco de dados. Para obter mais informações, consulte Defining and Managing Relationships.

As soluções existentes tentaram preencher essa lacuna, que é frequentemente chamada de “incompatibilidade de impedância”, mapeando apenas classes e propriedades orientados a objetos para tabelas e colunas relacionais. Em vez de utilizar essa abordagem tradicional, o Entity Framework mapeia tabelas, colunas e restrições de chave estrangeira em modelos lógicos para entidades e relações em modelos conceituais. Isso permite maior flexibilidade para definir objetos e otimizar o modelo lógico. As ferramentas do Modelo de Dados de Entidade geram classes de dados extensíveis baseadas no modelo conceitual. Essas classes são classes parciais que podem ser estendidas com a adição de membros feita pelo desenvolvedor. Por padrão, as classes geradas para um modelo conceitual específico derivam de classes base que fornecem serviços para materializar entidades como objetos e para controlar e salvar alterações. Os desenvolvedores podem usar essas classes para trabalhar com as entidades e relações como objetos relacionados por associações. Os desenvolvedores podem também personalizar as classes geradas para um modelo conceitual. Para obter mais informações, consulte Trabalhando com objetos e How to: Customize Object-Layer Code Generation.

Mais do que apenas outra solução de mapeamento de objetos relacionais, o Entity Framework é fundamentalmente um habilitador para que os aplicativos acessem e alterem dados que são representados como entidades e relações no modelo conceitual. O Entity Framework usa as informações no modelo e nos arquivos de mapeamento para converter consultas de objetos em tipos de entidade representados no modelo conceitual em consultas específicas à fonte de dados. Os resultados da consulta são materializados em objetos gerenciados pelo Entity Framework. O Entity Framework fornece as seguintes maneiras de consultar um modelo conceitual e retornar objetos:

  • LINQ to Entities. Fornece suporte ao LINQ (Consulta Integrada à Linguagem)) para consultar os tipos de entidade que são definidos em um modelo conceitual. Para obter mais informações, consulte LINQ to Entities.

  • Entity SQL. Um dialeto do SQL independente de armazenamento que funciona diretamente com entidades no modelo conceitual e que dá suporte aos conceitos do Modelo de Dados de Entidade. O Entity SQL é usado com consultas de objeto e consultas que são executadas usando o provedor EntityClient. Para obter mais informações, consulte Visão geral da Entity SQL.

  • Métodos do construtor de consultas. Esses métodos permitem construir consultas Entity SQL usando métodos de consulta no estilo LINQ. Para obter mais informações, consulte Query Builder Methods (Entity Framework).

O Entity Framework inclui o provedor de dados EntityClient. Esse provedor gerencia conexões, converte consultas de entidade em consultas específicas à fonte de dados e retorna um leitor de dados que o Entity Framework usa para materializar dados de entidade em objetos. Quando a materialização do objeto não é necessária, o provedor EntityClient também pode ser usado como um provedor de dados padrão do ADO.NET permitindo que os aplicativos executem consultas Entity SQL e consumam o leitor de dados somente leitura retornado. Para obter mais informações, consulte Provedor EntityClient para Entity Framework.

O diagrama a seguir ilustra a arquitetura do Entity Framework para acessar dados:

Entity Framework Architectural Diagram

As ferramentas do Modelo de Dados de Entidade podem gerar uma classe derivada de ObjectContext que representa o contêiner de entidade no modelo conceitual. Esse contexto de objeto fornece os recursos para controlar alterações e gerenciar identidades, simultaneidade e relações. Essa classe também expõe um método SaveChanges que grava inserções, atualizações e exclusões na fonte de dados. Como consultas, essas alterações são feitas pelos comandos gerados automaticamente pelo sistema ou por procedimentos armazenados especificados pelo desenvolvedor. Para obter mais informações, consulte Adding, Modifying, and Deleting Objects (Entity Framework).

O provedor do EntityClient estende o modelo de provedor do ADO.NET acessando dados em termos de entidades e relações conceituais. Executa consultas que usam Entity SQL. O Entity SQL fornece a linguagem de consulta subjacente que permite que o EntityClient se comunique com o banco de dados. Para obter mais informações, consulte Provedor EntityClient para Entity Framework.

O Entity Framework inclui um provedor de dados SqlClient atualizado que dá suporte a árvores de comandos canônicas. Para obter mais informações, consulte SqlClient para a entidade Framework.

Juntamente com o tempo de execução do Entity Framework, a versão 4 do .NET Framework inclui o Gerador de EDM (EdmGen.exe). Esse utilitário de prompt de comando se conecta a uma fonte de dados e gera arquivos de modelo e de mapeamento com base em um mapeamento um-para-um entre entidades e tabelas. Também usa um arquivo de modelo conceitual (.csdl) para gerar um arquivo de camada de objeto que contém classes que representam tipos de entidade e o ObjectContext. Para obter mais informações, consulte Gerador de EDM (EdmGen.exe).

O Visual Studio 2010 inclui suporte sofisticado à ferramenta para geração e manutenção de arquivos de modelo e de mapeamento em um aplicativo Visual Studio. O Designer do Modelo de Dados de Entidade oferece suporte à criação de cenários de mapeamento avançados, como herança de tabela por tipo e de tabela por hierarquia e divide entidades que são mapeadas para várias tabelas. Para obter mais informações, consulte ADO.NET Entity Data Model Designer.

Os tópicos a seguir permitem que você aprenda mais sobre o Entity Framework:

Introdução (Entity Framework)

Fornece informações sobre como entrar em funcionamento rapidamente usando oQuickstart (Entity Framework), que mostra como criar um aplicativo simples do Entity Framework.

Quickstart (Entity Framework)

Mostra como usar as ferramentas do Modelo de Dados de Entidade para criar rapidamente seu primeiro aplicativo Entity Framework.

Terminologia do Entity Framework

Define muitos dos termos apresentados pelo Modelo de Dados de Entidade e pelo Entity Framework e que são usados na documentação do Entity Framework.

Recursos do Entity Framework

Fornece links para tópicos conceituais e links para tópicos e recursos externos para criar aplicativos do Entity Framework.

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2014 Microsoft