Cómo: Configurar herencia usando Object Relational Designer
Publicado: abril de 2016
Object Relational Designer (Object Relational Designer) admite el concepto de la herencia de tabla única normalmente implementada en los 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 ha proporcionado un tutorial con datos.Para obtener instrucciones paso a paso detalladas sobre cómo configurar la herencia mediante el Object Relational Designer, vea Tutorial: Crear clases de LINQ to SQL usando la herencia de tabla única (Object Relational Designer).
Para crear clases de datos heredadas
Abra el Object Relational Designer agregando un elemento de Clases de LINQ to SQL a un proyecto existente de Visual Basic o de C#.
Arrastre la tabla que desee usar como clase base hasta el Object Relational Designer.
Arrastre una segunda copia de la tabla hasta el Object Relational Designer y cambie su nombre.Ésta es la clase derivada o subclase.
Haga clic en Herencia en la pestaña Object Relational Designer del Cuadro de herramientasy, a continuación, haga clic en la subclase (la tabla cuyo nombre cambió) 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.
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 utilizadas para las asociaciones: No se puede eliminar la propiedad <nombre de propiedad> porque participa en la asociación <nombre de asociación>.
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 obtener más información, consulte NOT IN BUILD: Overriding Properties and Methods.
Seleccione la línea de herencia en el Object Relational Designer.
En la ventana Propiedades, establezca la propiedad Discriminator en el nombre de columna que se usa para distinguir los registros en las clases.
Establezca la propiedad Valor de discriminador de clase derivada en el valor de la base de datos que designa el registro como tipo heredado.(Éste es el valor que está almacenado en la columna discriminadora y que se usa para designar la clase heredada).
Establezca la propiedad Valor de discriminador de clase base en el valor que designa el registro como tipo base.(Éste es el valor que está almacenado en la columna discriminadora y que se usa para designar la clase base).
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.
Vea también
Información general sobre Object Relational Designer
Tutorial: Crear clases de LINQ to SQL (Object Relational Designer)
PAVE What's New for Data Application Development in Visual Studio 2012
Obtener acceso a los datos en Visual Studio
LINQ a SQL
Tutorial: Crear clases de LINQ to SQL usando la herencia de tabla única (Object Relational Designer)
NOT IN BUILD: Inheritance in Visual Basic
Herencia