Tutorial: Crear clases de LINQ to SQL usando la herencia de tabla única (Object Relational Designer)
Object Relational Designer admite la herencia de tabla única normalmente implementada en los sistemas relacionales. En este tutorial se amplían los pasos genéricos descritos en el tema Cómo: Configurar herencia usando Object Relational Designer y se proporcionan algunos datos reales para mostrar el uso de la herencia en el Object Relational Designer.
Durante este tutorial realizará las tareas siguientes:
Crear una tabla de base de datos y agregar datos a la tabla.
Crear una aplicación de Windows Forms.
Agregar un archivo de LINQ to SQL a un proyecto.
Crear nuevas clases de entidad.
Configurar las clases de entidad de modo que usen la herencia.
Consultar la clase heredada.
Mostrar los datos en un Windows Form
Crear una tabla de la que se va a heredar
Para ver cómo funciona la herencia, va a crear una pequeña tabla Person, que usará como clase base y, a continuación, va a crear un objeto Employee, que heredará de ella.
Para crear una tabla base con el fin de mostrar la herencia
En el Explorador de servidores/Explorador de bases de datos, haga clic con el botón secundario del mouse en el nodo Tablas y, a continuación, haga clic en Agregar nueva tabla.
Nota
Puede usar la base de datos Northwind o cualquier otra base de datos a la que pueda agregar una tabla.
En el Diseñador de tablas, agregue las siguientes columnas a la tabla:
Nombre de columna
Tipo de datos
Permitir valores nulos
ID
int
False
Tipo
int
True
Nombre
nvarchar(200)
False
Apellido
nvarchar(200)
False
Administrador
int
True
Establezca la columna Id. como clave principal.
Guarde la tabla y asígnele el nombre Person.
Agregar datos a la tabla
Para poder comprobar que la herencia está correctamente configurada, la tabla necesita algunos datos por cada clase en la herencia de tabla única.
Para agregar datos a la tabla
Abra la tabla en la vista de datos. (Haga clic con el botón secundario del mouse en la tabla Person en el Explorador de servidores/Explorador de bases de datos y, a continuación, haga clic en Mostrar datos de tabla.)
Copie los datos siguientes en la tabla. (Puede copiarlos y, a continuación, pegarlos en la tabla seleccionando toda la fila en el Panel Resultados.)
ID
Tipo
Nombre
Apellido
Administrador
1
1
Anne
Wallace
NULL
2
1
Carlos
Grilo
NULL
3
1
Yael
Peled
NULL
4
2
Gatis
Ozolins
1
5
2
Andreas
Hauser
1
6
2
Tiffany
Phuvasate
1
7
2
Alexey
Orekhov
2
8
2
Michał
Poliszkiewicz
2
9
2
Tai
Yee
2
10
2
Fabricio
Noriega
3
11
2
Mindy
Martin
3
12
2
Ken
Kwok
3
Crear un nuevo proyecto
Ahora que ha creado la tabla, cree un nuevo proyecto para mostrar la configuración de la herencia.
Para crear una nueva aplicación para Windows
Desde el menú Archivo, cree un proyecto nuevo.
Asigne al proyecto el nombre InheritanceWalkthrough.
Nota
El Object Relational Designer se admite en proyectos de Visual Basic y de C#. Cree el nuevo proyecto en uno de estos lenguajes.
Haga clic en la plantilla Aplicación de Windows Forms y, a continuación, en haga clic en Aceptar. Para obtener más información, vea Crear aplicaciones basadas en Windows.
Se crea el proyecto InheritanceWalkthrough y se agrega al Explorador de soluciones.
Agregar un archivo de clases de LINQ to SQL al proyecto
Para agregar un archivo de LINQ to SQL al proyecto
En el menú Proyecto, haga clic en Agregar nuevo elemento.
Haga clic en la plantilla Clases de LINQ to SQL y, a continuación, haga clic en Agregar.
El archivo .dbml se agrega al proyecto y se abre el Object Relational Designer.
Crear la herencia mediante Object Relational Designer
Configure la herencia arrastrando un objeto Herencia desde el Cuadro de herramientas hasta la superficie de diseño.
Para crear la herencia
En el Explorador de servidores/Explorador de bases de datos, navegue a la tabla Person que creó anteriormente.
Arrastre la tabla Person hasta la superficie de diseño del Object Relational Designer.
Arrastre una segunda tabla Person hasta el Object Relational Designer y cambie su nombre a Employee.
Elimine la propiedad Administrador del objeto Person.
Elimine las propiedades Tipo, Id., Nombre y Apellido del objeto Employee. (Es decir, elimine todas las propiedades menos Administrador.)
Desde la pestaña Object Relational Designer del Cuadro de herramientas, cree una Herencia entre los objetos Person y Employee. Para ello, haga clic en el elemento Herencia del Cuadro de herramientas y suelte el botón del mouse. Después, haga clic en el objeto Employee y, a continuación, en el objeto Person del Object Relational Designer. La flecha en la línea de herencia apuntará al objeto Person.
Haga clic en la línea Herencia en la superficie de diseño.
Establezca la propiedad Discriminator en Tipo.
Establezca la propiedad Valor de discriminador de clase derivada en 2.
Establezca la propiedad Valor de discriminador de clase base en 1.
Establezca la propiedad Predeterminado de herencia en Person.
Cree el proyecto.
Consultar la clase heredada y mostrar los datos en el formulario
Ahora, va a agregar código al formulario para consultar una clase concreta en el modelo de objetos.
Para crear una consulta LINQ y mostrar los resultados en el formulario
Arrastre un control ListBox hasta el formulario Form1.
Haga doble clic en el formulario para crear un controlador de eventos Form1_Load.
Agregue el código siguiente al controlador de eventos Form1_Load:
Dim dc As New DataClasses1DataContext Dim results = From emp In dc.Persons _ Where TypeOf emp Is Employee _ Select emp For Each Emp As Employee In results ListBox1.Items.Add(Emp.LastName) Next
NorthwindDataContext dc = new DataClasses1DataContext(); var results = from emp in dc.Persons where emp is Employee select emp; foreach(Employee Emp in results) { listBox1.Items.Add(Emp.LastName) }
Probar la aplicación
Ejecute la aplicación y compruebe que los registros mostrados en el cuadro de lista son todos empleados (registros con el valor 2 en la columna Tipo).
Para probar la aplicación
Presione F5.
Compruebe que se muestran únicamente los registros con el valor 2 en la columna Tipo.
Cierre el formulario. (En el menú Depurar, haga clic en Detener depuración.)
Vea también
Tareas
Cómo: Agregar clases de LINQ to SQL a un proyecto (Object Relational Designer)
Tutorial: Crear clases de LINQ to SQL (Object Relational Designer)
Cómo: Generar el modelo de objetos en Visual Basic o C# (LINQ to SQL)
Conceptos
Información general sobre Object Relational Designer