Entity Data Model: HerenciaEntity Data Model: Inheritance

Entity Data Model (EDM) admite la herencia para tipos de entidad.The Entity Data Model (EDM) supports inheritance for entity types. La herencia en EDM es similar a la herencia para las clases en los lenguajes de programación orientados a objetos.Inheritance in the EDM is similar to inheritance for classes in object-oriented programming languages. Al igual que con las clases de lenguajes orientados a objetos, en un modelo conceptual puede definir un tipo de entidad (una tipo derivado) que hereda de otro tipo de entidad (el tipo base).Like with classes in object-oriented languages, in a conceptual model you can define an entity type (a derived type) that inherits from another entity type (the base type). Sin embargo, a diferencia de las clases en la programación orientada a objetos, en un modelo conceptual el tipo derivado siempre hereda todas las propiedades y las propiedades de navegación del tipo base.However, unlike classes in object-oriented programming, in a conceptual model the derived type always inherits all the properties and navigation properties of the base type. No se pueden reemplazar las propiedades heredadas en un tipo derivado.You cannot override inherited properties in a derived type.

En un modelo conceptual, se pueden crear jerarquías de herencia en las que un tipo derivado hereda de otro tipo derivado.In a conceptual model you can build inheritance hierarchies in which a derived type inherits from another derived type. El tipo en la parte superior de la jerarquía (un tipo de la jerarquía que no es un tipo derivado) se denomina la el tipo de raíz.The type at the top of the hierarchy (the one type in the hierarchy that is not a derived type) is called the root type. En una jerarquía de herencia, la clave de entidad debe definirse en el tipo raíz.In an inheritance hierarchy, the entity key must be defined on the root type.

No se pueden crear jerarquías de herencia en las que un tipo derivado hereda de más de un tipo.You cannot build inheritance hierarchies in which a derived type inherits from more than one type. Por ejemplo, en un modelo conceptual con un tipo de entidad Book, se podrían definir tipos derivados FictionBook y NonFictionBook que hereden de Book.For example, in a conceptual model with a Book entity type, you could define derived types FictionBook and NonFictionBook that each inherit from Book. Sin embargo, no se podría definir un tipo que herede de los tipos FictionBook y NonFictionBook.However, you could not then define a type that inherits from both the FictionBook and NonFictionBook types.

EjemploExample

El siguiente diagrama muestra un modelo conceptual con cuatro tipos de entidad: Book, FictionBook, Publisher, y Author.The following diagram shows a conceptual model with four entity types: Book, FictionBook, Publisher, and Author. El tipo de entidad FictionBook es un tipo derivado, que hereda del tipo de entidad Book.The FictionBook entity type is a derived type, inheriting from the Book entity type. El tipo FictionBook hereda las propiedades ISBN (Key), Title y Revision, y define una propiedad adicional denominada Genre.The FictionBook type inherits the ISBN (Key), Title, and Revision properties, and defines an additional property called Genre.

Diagrama que muestra un modelo conceptual con cuatro tipos de entidad.

El ADO.NET Entity Framework usa un lenguaje específico de dominio (DSL) denominado lenguaje de definición de esquemas conceptuales (CSDL) para definir los modelos conceptuales.The ADO.NET Entity Framework uses a domain-specific language (DSL) called conceptual schema definition language (CSDL) to define conceptual models. El código CSDL siguiente define un tipo de entidad, FictionBook, que hereda del tipo Book (como en el diagrama anterior):The following CSDL defines an entity type, FictionBook, that inherits from the Book type (as in the diagram above):

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

Vea tambiénSee also