Compartir a través de


Modelo de datos de entidad: herencia

Entity Data Model (EDM) admite la herencia para los tipos de entidad. La herencia en EDM es similar a la herencia de clases en lenguajes de programación orientados a objetos. Al igual que con las clases en lenguajes orientados a objetos, en un modelo conceptual puede definir un tipo de entidad (un tipo derivado) que herede de otro tipo de entidad (el tipo base). Sin embargo, a diferencia de las clases de programación orientada a objetos, en un modelo conceptual, el tipo derivado siempre hereda todas las propiedades y propiedades de navegación del tipo base. No se pueden invalidar las propiedades heredadas en un tipo derivado.

En un modelo conceptual, puede crear jerarquías de herencia en las que un tipo derivado hereda de otro tipo derivado. El tipo situado en la parte superior de la jerarquía (el tipo de la jerarquía que no es un tipo derivado) se denomina tipo raíz. En una jerarquía de herencia, la clave de entidad debe definirse en el tipo raíz.

No se pueden crear jerarquías de herencia en las que un tipo derivado hereda de más de un tipo. Por ejemplo, en un modelo conceptual con un Book tipo de entidad, podría definir tipos derivados FictionBook y NonFictionBook que cada uno herede de Book. Sin embargo, no se pudo definir un tipo que herede de ambos tipos FictionBook y NonFictionBook.

Ejemplo

En el diagrama siguiente se muestra un modelo conceptual con cuatro tipos de entidad: Book, FictionBook, Publishery Author. El FictionBook tipo de entidad es un tipo derivado que hereda del Book tipo de entidad. El FictionBook tipo hereda las ISBN (Key)propiedades , Titley Revision y define una propiedad adicional denominada Genre.

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

El ADO.NET Entity Framework usa un lenguaje específico del dominio (DSL) denominado lenguaje de definición de esquema conceptual (CSDL) para definir modelos conceptuales. El siguiente CSDL define un tipo de entidad, FictionBook, que hereda del Book tipo (como en el diagrama anterior):

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

Consulte también