Esta documentación está archivada y no tiene mantenimiento.

Tutorial: Crear clases de LINQ to SQL usando la herencia de tabla única (Diseñador relacional de objetos)

Actualización: November 2007

El Diseñador relacional de objetos (Diseñador R/O) 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 el Diseñador relacional de objetos y se proporcionan algunos datos reales para mostrar el uso de la herencia en el Diseñador relacional de objetos.

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 formularios 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 formulario Windows Forms

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

  1. 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.

    Bb384467.alert_note(es-es,VS.90).gifNota:

    Puede usar la base de datos Northwind o cualquier otra base de datos a la que pueda agregar una tabla.

  2. 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

    Type

    int

    True

    Nombre

    nvarchar(200)

    False

    Apellido

    nvarchar(200)

    False

    Administrador

    int

    True

  3. Establezca la columna Id. como clave principal.

  4. Guarde la tabla y asígnele el nombre Person.

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

  1. 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.)

  2. Copie los datos siguientes en la tabla. (Puede copiarlos y, a continuación, pegarlos en la tabla seleccionando toda la fila en el Results Pane.)

    Id.

    Type

    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

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

  1. Desde el menú Archivo, cree un proyecto nuevo.

  2. Asigne al proyecto el nombre InheritanceWalkthrough.

    Bb384467.alert_note(es-es,VS.90).gifNota:

    El Diseñador relacional de objetos se admite en proyectos de Visual Basic y de C#. Cree el nuevo proyecto en uno de estos lenguajes.

  3. 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.

  4. Se crea el proyecto InheritanceWalkthrough y se agrega al Explorador de soluciones.

Para agregar un archivo de LINQ to SQL al proyecto

  1. En el menú Proyecto, haga clic en Agregar nuevo elemento.

  2. 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 Diseñador relacional de objetos.

Configure la herencia arrastrando un objeto Herencia desde el Cuadro de herramientas hasta la superficie de diseño.

Para crear la herencia

  1. En el Explorador de servidores/Explorador de bases de datos, navegue a la tabla Person que creó anteriormente.

  2. Arrastre la tabla Person hasta la superficie de diseño del Diseñador relacional de objetos.

  3. Arrastre una segunda tabla Person hasta el Diseñador relacional de objetos y cambie su nombre a Employee.

  4. Elimine la propiedad Administrador del objeto Person.

  5. Elimine las propiedades Tipo, Id., Nombrey Apellido del objeto Employee. (Es decir, elimine todas las propiedades menos Administrador.)

  6. Desde la ficha Diseñador relacional de objetos 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 Diseñador relacional de objetos. La flecha en la línea de herencia apuntará al objeto Person.

  7. Haga clic en la línea Herencia en la superficie de diseño.

  8. Establezca la propiedad Discriminator en Tipo.

  9. Establezca la propiedad Valor de discriminador de clase derivada en 2.

  10. Establezca la propiedad Valor de discriminador de clase base en 1.

  11. Establezca la propiedad Predeterminado de herencia en Person.

  12. Genere el proyecto.

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

  1. Arrastre un control ListBox hasta el formulario Form1.

  2. Haga doble clic en el formulario para crear un controlador de eventos Form1_Load.

  3. 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)
    }
    

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

  1. Presione F5.

  2. Compruebe que se muestran únicamente los registros con el valor 2 en la columna Tipo.

  3. Cierre el formulario. (En el menú Depurar, haga clic en Detener depuración.)

Mostrar: