Entity Framework - Conceitos Básicos - Terminologia


Este série de artigos é dedicada ao Entity Framework e tem o objetivo de dar uma introdução básica e uma visão geral de como usar este importante recurso da plataforma .NET. Os artigos são parcialmente baseados na documentação da MSDN de onde são citadas as respectivas referências.

Iniciando com o Entity Framework

Conceito

A ADO .NET Entity Framework foi projetado para permitir que a criação de aplicações com acesso a dados use o modelo de programação feito contra um modelo conceitual ao invés do antigo modelo de programação feito diretamente contra um banco de dados relacional. O objetivo é diminuir a quantidade de código e o tempo de manutenção necessária exigida nestas aplicações orientada a dados.

A ADO .NET Entity Framework é uma framework que abstrai o esquema de um banco de dados relacional e o apresenta como um modelo conceitual. Abaixo a figura que representa a arquitetura em camadas do Entity Framework: (Até o lançamento do VS 2010)

Data Source :  Representa a base da arquitetura onde estão armazenados os dados;

Data Providers :  Os dados são acessados por um ADO.NET data provider.  Até o momento tanto o SQL Server como o MySQL são suportados e provavelmente em breve os principais RDBMS do mercado (Oracle, MySQL, DB2, Firebird, Sybase, VistaDB, SQLite, ...) terão um provider.

Entity Data Model (EDM) :  O  Entity Data Model  é constituído de 3 partes:

  • Conceptual schema definition language (CSDL) : Declara e define entidades, associações, herança, etc,. As Entity classes são geradas a partir deste esquema;
  • Store schema definition language (SSDL) : Metadados que descreve o container de armazenamento (=banco de dados) que persiste os dados;
  • Mapping specification language (MSL) : Mapeia as entidades no arquivo CSDL para tabelas descritas no arquivo SSDL;

Entity Client : O EntityClient é um provedor gerenciado ADO.NET que suporta o acesso a dados descritos no EDM. Ele é similar ao SQLClient, e fornece diversos componentes como EntityCommand, EntityConnection e EntityTransaction;

Object Services : Este componente permite realizar consultas, atualizações, inclusões e exclusões nos dados, expressados como objetos CLR fortemente tipados que são instâncias de entity types. Ele da suporte tanto a consultas Entity SQL como LINQ to Entities;

Entity SQL (ESQL) : É uma derivação da Transact-SQL, projetada para consultar e manipular entidades definidas no EDM. Ele dá suporte herança e associação sendo que tanto os componentes Object Services como os componentes Entity Client podem executar instruções Entity SQL;

LINQ to Entities : É uma linguagem de consulta fortemente tipada para consultar entidades definidas no EDM;

É uma boa idéia você se habituar com a terminologia usada pelo Entity Framework, vamos aos principais termos usados:

Termo Definição do termo
association A definição de um relacionamento entre entidades.
association set Um container lógico para as instâncias de associações do mesmo tipo;
base type Um tipo no EDM a partir do qual um ou mais tipos derivados herdam algumas das suas propriedades;
constraint Restringe valores possíveis de uma propriedade e verifica se um valor é válido;
container Um agrupamento lógico de entidades (entity) e conjunto de associações (association sets).
concurrency Um processo que permite que múltiplos usuários acessem e alterem dados compartilhados ao mesmo tempo. O Entity Framework implementa o modelo de concorrência otimista (optimistic concurrency model)
deferred loading(Lazy load) Quando objetos são retornados por uma consulta, os objetos relacionados não são carregados ao mesmo tempo, ao invés, eles são carregados automaticamente quando a propriedade de navegação for acessada.  É também conhecido como "lazy loading".
eager loading É o processo de carregar um conjunto específico de objetos relacionados com os objetos que forem explicitamente requisitados por uma consulta.
entity Um conceito em um domínio de uma aplicação a partir da qual um tipo de dados é definido.
EntityClient È um provedor de armazenamento independente  ADO.NET que contém classes tais como EntityConnection, EntityCommand, e EntityDataReader. Trabalha com Entity SQL.
entity container Especifica um conjunto de entidades e associações que serão implementadas em um namespace específico.
Entity Data Model (EDM) Um modelo que permite a representação dos dados como um conjunto de entidades e relacionamentos.
entity set O container lógico para entidades de um dado tipo e  seu subtipo. As entity sets são mapeados para tabelas no banco de dados.
entity type Uma classe que representa um entidade como definida no modelo conceitual. Objetos são instâncias das entity types.
EntityType Uma especificação para um tipo de dados que inclui uma chave e um conjunto de propriedades e representa o item no modelo conceitual.
explicit loading Quando objetos são retornados  pela consulta os objetos relacionados não são carregados ao mesmo tempo. Eles não são carregados até que sejam explicitamente requisitados usando o método Load.
key O atributo de um entity type que especifica qual propriedade ou conjunto de propriedades é usado para identificar instâncias únicas de um entity type
mapping Uma especificação de correspondência entre itens em um modelo conceitual e o modelo de armazenamento.
mapping file Um arquivo XML que é a representação de um mapeamento entre o modelo conceitual e o modelo de banco de dados.
multiplicity O número de entidades que pode existir em cada lado de um relacionamento.
multiple entity sets per type A habilidade de uma entidade de ser definida em um ou mais de um entity set.

navigation property Uma propriedade de uma entidade que representa o relacionamento para outra entidade, como definido por uma associação. Ela é usada para retornar objetos relacionados como uma EntityCollection ou uma EntityReference, dependendo da multiplicidade do outro lado da associação.
object context Representa o entity container definido em um modelo conceitual e contém a conexão correspondente à fonte de dados e fornece serviços como o gerenciamento de estado e resolução de identidade. Um object context é representado por uma instância da classe ObjectContext.
object query Uma consulta executada contra um modelo de dados em um object context que retorna dados como objetos.
relationship A conexão lógica entre entidades.
role O nome dado para cada final de uma associação.
scalar property Uma propriedade de uma entidade que mapeia para um campo único no modelo de armazenamento.
simple type Um tipo primitivo que é usado para definir propriedades em um  modelo conceitual.

No início pode parecer confuso mas com o tempo você acabará dominando a terminologia usada no Entity Framework.

Eu sei é apenas Entity Framework, mas eu gosto...

Referências:


José Carlos Macoratti