Partilhar via


Modelo de Dados de Entidade: Herança

O Modelo de Dados de Entidade (EDM) suporta herança para tipos de entidade. A herança no EDM é semelhante à herança para classes em linguagens de programação orientadas a objetos. Como nas classes em linguagens orientadas a objetos, em um modelo conceitual você pode definir um tipo de entidade (um tipo derivado) que herda de outro tipo de entidade (o tipo base). No entanto, ao contrário das classes na programação orientada a objetos, em um modelo conceitual o tipo derivado sempre herda todas as propriedades e propriedades de navegação do tipo base. Não é possível substituir propriedades herdadas em um tipo derivado.

Em um modelo conceitual, você pode criar hierarquias de herança nas quais um tipo derivado herda de outro tipo derivado. O tipo na parte superior da hierarquia (o único tipo na hierarquia que não é um tipo derivado) é chamado de tipo raiz. Em uma hierarquia de herança, a chave de entidade deve ser definida no tipo raiz.

Não é possível criar hierarquias de herança nas quais um tipo derivado herda de mais de um tipo. Por exemplo, em um modelo conceitual com um Book tipo de entidade, você pode definir tipos FictionBook derivados e NonFictionBook que cada um herda do Book. No entanto, não foi possível definir um tipo que herda dos FictionBook tipos e NonFictionBook .

Exemplo

O diagrama a seguir mostra um modelo conceitual com quatro tipos de entidade: Book, FictionBook, Publishere Author. O FictionBook tipo de entidade é um tipo derivado, herdado do Book tipo de entidade. O FictionBook tipo herda as ISBN (Key)propriedades , Title, e Revision e define uma propriedade adicional chamada Genre.

Diagram that shows a conceptual model with four entity types.

O ADO.NET Entity Framework usa uma linguagem específica de domínio (DSL) chamada linguagem de definição de esquema conceitual (CSDL) para definir modelos conceituais. A CSDL a seguir define um tipo de entidade, FictionBook, que herda do Book tipo (como no diagrama acima):

<EntityType Name="FictionBook" BaseType="BooksModel.Book" >
  <Property Type="String" Name="Genre" Nullable="false" />
</EntityType>

Consulte também