Conceitos chave do Modelo de Dados de EntidadeEntity Data Model Key Concepts

O Modelo de Dados de Entidade (EDM) usa três conceitos principais para descrever a estrutura de dados: tipo de entidade, tipo de associaçãoe Propriedade.The Entity Data Model (EDM) uses three key concepts to describe the structure of data: entity type, association type, and property. Esses são os conceitos mais importantes para descrever a estrutura dos dados em qualquer implementação do EDM.These are the most important concepts in describing the structure of data in any implementation of the EDM.

Tipo de entidadeEntity Type

O tipo de entidade é o bloco de construção fundamental para descrever a estrutura de dados com o modelo de dados de entidade.The entity type is the fundamental building block for describing the structure of data with the Entity Data Model. Em um modelo conceitual, os tipos de entidade são construídos a partir de Propriedades e descrevem a estrutura de conceitos de nível superior, como clientes e pedidos em um aplicativo de negócios.In a conceptual model, entity types are constructed from properties and describe the structure of top-level concepts, such as a customers and orders in a business application. Da mesma forma que uma definição de classe em um programa de computador é um modelo para instâncias da classe, um tipo de entidade é um modelo para entidades.In the same way that a class definition in a computer program is a template for instances of the class, an entity type is a template for entities. Uma entidade representa um objeto específico (como um cliente ou um pedido específico.)An entity represents a specific object (such as a specific customer or order). Cada entidade deve ter uma chave de entidade exclusiva dentro de um conjunto de entidades.Each entity must have a unique entity key within an entity set. Um conjunto de entidades é uma coleção de instâncias de um tipo de entidade específico.An entity set is a collection of instances of a specific entity type. Conjuntos de entidades (e conjuntos de associação) são logicamente agrupados em um contêiner de entidade.Entity sets (and association sets) are logically grouped in an entity container.

A herança é suportada com tipos de entidade: isto é, um tipo de entidade pode ser derivado de outro.Inheritance is supported with entity types: that is, one entity type can be derived from another. Para obter mais informações, consulte modelo de dados de entidade: herança.For more information, see Entity Data Model: Inheritance.

Tipo de associaçãoAssociation Type

Um tipo de associação (também chamado de associação) é o bloco de construção fundamental para descrever relações no modelo de dados de entidade.An association type (also called an association) is the fundamental building block for describing relationships in the Entity Data Model. Em um modelo conceitual, uma associação representa uma relação entre dois tipos de entidade (como cliente e pedido).In a conceptual model, an association represents a relationship between two entity types (such as Customer and Order). Cada associação tem duas extremidades de associação que especificam os tipos de entidade envolvidos na associação.Every association has two association ends that specify the entity types involved in the association. Cada extremidade de associação também especifica uma multiplicidade de extremidade de associação que indica o número de entidades que podem estar nessa extremidade da associação.Each association end also specifies an association end multiplicity that indicates the number of entities that can be at that end of the association. Uma multiplicidade de extremidade de associação pode ter um valor de um (1), zero ou um (0.. 1) ou muitos (*).An association end multiplicity can have a value of one (1), zero or one (0..1), or many (*). As entidades em uma extremidade de uma associação podem ser acessadas por meio de Propriedades de navegaçãoou por meio de chaves estrangeiras se forem expostas em um tipo de entidade.Entities at one end of an association can be accessed through navigation properties, or through foreign keys if they are exposed on an entity type. Para obter mais informações, consulte Propriedade Foreign Key.For more information, see foreign key property.

Em um aplicativo, uma instância de uma associação representa uma associação específica (como uma associação entre uma instância de cliente e instâncias de pedido).In an application, an instance of an association represents a specific association (such as an association between an instance of Customer and instances of Order). As instâncias de associação são agrupadas logicamente em um conjunto de associação.Association instances are logically grouped in an association set. Os conjuntos de associação (e conjuntos de entidades) são logicamente agrupados em um contêiner de entidade.Association sets (and entity sets) are logically grouped in an entity container.

propriedadeProperty

Os tipos de entidade contêm Propriedades que definem sua estrutura e características.Entity types contain properties that define their structure and characteristics. Por exemplo, um tipo de entidade de cliente pode ter propriedades como CustomerId, Name e Address.For example, a Customer entity type may have properties such as CustomerId, Name, and Address.

As propriedades em um modelo conceitual são análogas às propriedades definidas em uma classe em um programa de computador.Properties in a conceptual model are analogous to properties defined on a class in a computer program. Da mesma forma que as propriedades em uma classe definem a forma da classe e transportam informações sobre objetos, as propriedades em um modelo conceitual definem a forma de um tipo de entidade e transportam informações sobre as instâncias dos tipos de entidade.In the same way that properties on a class define the shape of the class and carry information about objects, properties in a conceptual model define the shape of an entity type and carry information about entity type instances.

Uma propriedade pode conter dados primitivos (como uma cadeia de caracteres, um número inteiro ou um valor booliano) ou dados estruturados (como um tipo complexo).A property can contain primitive data (such as a string, an integer, or a Boolean value), or structured data (such as a complex type). Para obter mais informações, consulte modelo de dados de entidade: tipos de dados primitivos.For more information, see Entity Data Model: Primitive Data Types.

Representações de um modelo conceitualRepresentations of a Conceptual Model

Um modelo conceitual é uma representação específica da estrutura de alguns dados como entidades e relações.A conceptual model is a specific representation of the structure of some data as entities and relationships. Uma maneira de representar um modelo conceitual é com um diagrama.One way to represent a conceptual model is with a diagram. O diagrama a seguir representa um modelo conceitual com três tipos de entidade (Book, Publisher e Author) e duas associações (PublishedBy e WrittenBy):The following diagram represents a conceptual model with three entity types (Book, Publisher, and Author) and two associations (PublishedBy and WrittenBy):

Diagrama mostrando um modelo conceitual com três tipos de entidade.

Essa representação, no entanto, tem alguns defeitos quando se trata de transmitir alguns detalhes sobre o modelo.This representation, however, has some shortcomings when it comes to conveying some details about the model. Por exemplo, o tipo de propriedade e as informações do conjunto de entidades não são transportados no diagrama.For example, property type and entity set information are not conveyed in the diagram. A sofisticação de um modelo conceitual pode ser transmitida mais claramente com um DSL (linguagem específica do domínio).The richness of a conceptual model can be conveyed more clearly with a domain-specific language (DSL). O Entity Framework ADO.net usa uma DSL baseada em XML chamada linguagem de definição de esquema conceitual (CSDL) para definir modelos conceituais.The ADO.NET Entity Framework uses an XML-based DSL called conceptual schema definition language (CSDL) to define conceptual models. O seguinte é a definição CSDL do modelo conceitual no diagrama anterior:The following is the CSDL definition of the conceptual model in the diagram above:

  <Schema xmlns="http://schemas.microsoft.com/ado/2008/09/edm"
          xmlns:cg="http://schemas.microsoft.com/ado/2006/04/codegeneration"
          xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator"
          Namespace="BooksModel" Alias="Self">
    <EntityContainer Name="BooksContainer" >
      <EntitySet Name="Books" EntityType="BooksModel.Book" />
      <EntitySet Name="Publishers" EntityType="BooksModel.Publisher" />
      <EntitySet Name="Authors" EntityType="BooksModel.Author" />
      <AssociationSet Name="PublishedBy" Association="BooksModel.PublishedBy">
        <End Role="Book" EntitySet="Books" />
        <End Role="Publisher" EntitySet="Publishers" />
      </AssociationSet>
      <AssociationSet Name="WrittenBy" Association="BooksModel.WrittenBy">
        <End Role="Book" EntitySet="Books" />
        <End Role="Author" EntitySet="Authors" />
      </AssociationSet>
    </EntityContainer>
    <EntityType Name="Book">
      <Key>
        <PropertyRef Name="ISBN" />
      </Key>
      <Property Type="String" Name="ISBN" Nullable="false" />
      <Property Type="String" Name="Title" Nullable="false" />
      <Property Type="Decimal" Name="Revision" Nullable="false" Precision="29" Scale="29" />
      <NavigationProperty Name="Publisher" Relationship="BooksModel.PublishedBy"
                          FromRole="Book" ToRole="Publisher" />
      <NavigationProperty Name="Authors" Relationship="BooksModel.WrittenBy"
                          FromRole="Book" ToRole="Author" />
    </EntityType>
    <EntityType Name="Publisher">
      <Key>
        <PropertyRef Name="Id" />
      </Key>
      <Property Type="Int32" Name="Id" Nullable="false" />
      <Property Type="String" Name="Name" Nullable="false" />
      <Property Type="String" Name="Address" Nullable="false" />
      <NavigationProperty Name="Books" Relationship="BooksModel.PublishedBy"
                          FromRole="Publisher" ToRole="Book" />
    </EntityType>
    <EntityType Name="Author">
      <Key>
        <PropertyRef Name="Name" />
        <PropertyRef Name="Address" />
      </Key>
      <Property Type="String" Name="Name" Nullable="false" />
      <Property Type="String" Name="Address" Nullable="false" />
      <NavigationProperty Name="Books" Relationship="BooksModel.WrittenBy"
                          FromRole="Author" ToRole="Book" />
    </EntityType>
<Association Name="PublishedBy">
      <End Type="BooksModel.Book" Role="Book" Multiplicity="*" />
      <End Type="BooksModel.Publisher" Role="Publisher" Multiplicity="1" />
    </Association>
    <Association Name="WrittenBy">
      <End Type="BooksModel.Book" Role="Book" Multiplicity="*" />
      <End Type="BooksModel.Author" Role="Author" Multiplicity="*" />
    </Association>
  </Schema>

Consulte tambémSee also