Share via


Configurar herencia mediante Object Relational Designer

El Object Relational Designer (O/R Designer) admite el concepto de herencia de tabla única que normalmente se implementa en sistemas relacionales. En la herencia de tabla única, hay una sola tabla de base de datos que contiene campos tanto para la información de elementos primarios como para la información de elementos secundarios. En el caso de datos relacionales, una columna discriminadora contiene el valor que determina la clase a la que pertenece un registro cualquiera.

Por ejemplo, consideremos una tabla Persons que contiene todas las personas que trabajan en una compañía. Algunas personas son los empleados y otras son los directores. La tabla Persons contiene una columna denominada EmployeeType que tiene el valor 1 para los directores y el valor 2 para los empleados; ésta es la columna discriminadora. En este escenario, puede crear una subclase de empleados y rellenar la clase únicamente con los registros cuyo EmployeeType tiene el valor 2. Puede eliminar también columnas que no se aplican desde cada una de las clases.

La creación de un modelo de objetos que use la herencia (y que corresponda a datos relacionales) puede resultar un poco confusa. En el procedimiento siguiente se describen los pasos necesarios para configurar la herencia con Object Relational Designer. Puede resultar difícil seguir estos pasos genéricos sin hacer referencia a una tabla y columnas ya existentes, por lo que se proporciona un tutorial con datos. Para obtener instrucciones paso a paso para configurar la herencia mediante el uso de la Object Relational Designer, consulte Tutorial: creación de LINQ to SQL clases mediante la herencia de tabla única (Object Relational Designer).

Para crear clases de datos heredadas

  1. Abra el O/R Designer agregando un elemento de Clases de LINQ to SQL a un proyecto existente de Visual Basic o de C#.

  2. Arrastre la tabla que desee usar como clase base hasta el O/R Designer.

  3. Arrastre una segunda copia de la tabla hasta el O/R Designer y cambie su nombre. Ésta es la clase derivada o subclase.

  4. Haga clic en Herencia en la pestaña Object Relational Designer del Cuadro de herramientas y, a continuación, haga clic en la subclase (la tabla cuyo nombre ha cambiado) y conéctela a la clase base.

    Nota

    Haga clic en el elemento Herencia del Cuadro de herramientas y suelte el botón del mouse, haga clic en la segunda copia de la clase creada en el paso 3 y haga clic en la primera clase creada en el paso 2. La flecha en la línea de herencia apuntará a la primera clase.

  5. En cada clase, elimine las propiedades de objeto que no desee que aparezcan y que no se utilicen para asociaciones. Recibirá un error si intenta eliminar las propiedades de objeto usadas para las asociaciones: The property <property name> cannot be deleted because it is participating in the association <association name>.

    Nota:

    Dado que una clase derivada hereda las propiedades definidas en su clase base, no se pueden definir las mismas columnas en cada clase. (Las columnas se implementan como propiedades). Puede habilitar la creación de columnas en la clase derivada estableciendo el Modificador de herencia de la propiedad en la clase base. Para más información, vea Fundamentos de la herencia (Visual Basic).

  6. Seleccione la línea de herencia en el O/R Designer.

  7. En la ventana Propiedades, establezca la propiedad Discriminator en el nombre de columna que se usa para distinguir los registros en las clases.

  8. Establezca la propiedad Valor de discriminador de clase derivada en el valor de la base de datos que designa el registro como tipo heredado. (Este es el valor que está almacenado en la columna discriminadora y que se usa para designar la clase heredada).

  9. Establezca la propiedad Valor de discriminador de clase base en el valor que designa el registro como tipo base. (Este es el valor que está almacenado en la columna discriminadora y que se usa para designar la clase base).

  10. De manera opcional, también puede establecer la propiedad Predeterminado de herencia para designar un tipo en una jerarquía de herencia que se va a usar cuando se carguen filas que no coinciden con ningún código de herencia definido. Es decir, si un registro tiene un valor en su columna discriminadora que no coincide con el valor de las propiedades Valor de discriminador de clase derivada o Valor de discriminador de clase base, el registro se cargará en el tipo designado como Predeterminado de herencia.