Entity Framework - Modelo de Dados
O Entity Data Model (EDM) é uma versão estendida do modelo Entity-Relationship que especifica o modelo conceitual dos dados usando várias técnicas de modelagem. Também se refere a um conjunto de conceitos que descrevem a estrutura de dados, independentemente de sua forma armazenada.
EDM suporta um conjunto de tipos de dados primitivos que definem propriedades em um modelo conceitual. Precisamos considerar 3 partes principais que formam a base do Entity Framework e, coletivamente, são conhecidas como Entity Data Model. A seguir estão as três partes principais do EDM.
- O modelo de esquema de armazenamento
- O modelo conceitual
- O modelo de mapeamento
O modelo de esquema de armazenamento
O modelo de armazenamento, também chamado de camada de definição de esquema de armazenamento (SSDL), representa a representação esquemática do armazenamento de dados de backend.
O modelo conceitual
O modelo conceitual, também chamado de camada de definição de esquema conceitual (CSDL), é o modelo de entidade real, contra o qual escrevemos nossas consultas.
O modelo de mapeamento
A camada de mapeamento é apenas um mapeamento entre o modelo conceitual e o modelo de armazenamento.
O esquema lógico e seu mapeamento com o esquema físico são representados como um EDM.
Visual Studio também fornece Entity Designer, para criação visual do EDM e a especificação de mapeamento.
A saída da ferramenta é o arquivo XML (* .edmx) especificando o esquema e o mapeamento.
O arquivo Edmx contém artefatos de metadados do Entity Framework.
Linguagem de definição de esquema
O ADO.NET Entity Framework usa uma linguagem de definição de dados baseada em XML, chamada Schema Definition Language (SDL) para definir o esquema EDM.
O SDL define os Tipos Simples semelhantes a outros tipos primitivos, incluindo String, Int32, Double, Decimal e DateTime, entre outros.
Uma Enumeração, que define um mapa de valores e nomes primitivos, também é considerada um tipo simples.
Enumerações são suportadas apenas a partir do framework versão 5.0.
Tipos complexos são criados a partir de uma agregação de outros tipos. Uma coleção de propriedades desses tipos define um Tipo de entidade.
O modelo de dados tem principalmente três conceitos-chave para descrever a estrutura de dados -
- Tipo de entidade
- Tipo de associação
- Property
Tipo de entidade
O tipo de entidade é o bloco de construção fundamental para descrever a estrutura de dados em EDM.
Em um modelo conceitual, os tipos de entidade são construídos a partir de propriedades e descrevem a estrutura dos conceitos de nível superior, como Alunos e Inscrições em um aplicativo de negócios.
Uma entidade representa um objeto específico, como um Aluno ou Inscrição específico.
Cada entidade deve ter uma chave de entidade exclusiva em um conjunto de entidades. Um conjunto de entidades é uma coleção de instâncias de um tipo de entidade específico. Conjuntos de entidades (e conjuntos de associações) são agrupados logicamente em um contêiner de entidade.
A herança é compatível com tipos de entidade, ou seja, um tipo de entidade pode ser derivado de outro.
Tipo de Associação
É outro bloco de construção fundamental para descrever relacionamentos em EDM. Em um modelo conceitual, uma associação representa um relacionamento entre dois tipos de entidade, como Aluno e Inscrição.
Cada associação tem duas extremidades de associação que especificam os tipos de entidade envolvidos na associação.
Cada extremidade da associação também especifica uma multiplicidade de extremidade da associação que indica o número de entidades que podem estar nessa extremidade da associação.
Uma multiplicidade de extremidade de associação pode ter um valor de um (1), zero ou um (0..1) ou muitos (*).
As entidades em uma extremidade de uma associação podem ser acessadas por meio de propriedades de navegação ou por meio de chaves estrangeiras se estiverem expostas em um tipo de entidade.
Propriedade
Os tipos de entidade contêm propriedades que definem sua estrutura e características. Por exemplo, um tipo de entidade de Aluno pode ter propriedades como Id do Aluno, Nome etc.
Uma propriedade pode conter dados primitivos (como uma string, um número inteiro ou um valor booleano) ou dados estruturados (como um tipo complexo).