Share via


Consultar entidades y asociaciones (Tutorial rápido de Entity Framework)

En esta tarea se crearán consultas con establecimiento inflexible de tipos en los objetos CLR que representan a las entidades y asociaciones del modelo School, y se enlazarán controles de presentación a las colecciones de objetos que devuelvan estas consultas.

Para consultar los departamentos de la base de datos School

  1. Al principio del archivo de código del formulario CourseViewer, agregue las instrucciones siguientes using (C#) o Imports (Visual Basic) para hacer referencia al modelo creado a partir de la base de datos School y del espacio de nombres de entidad.

    Imports System.Data.Objects
    Imports System.Data.Objects.DataClasses
    
    using System.Data.Objects;
    using System.Data.Objects.DataClasses;
    
  2. Al principio de la definición de clase parcial del formulario CourseViewer, agregue el código siguiente que crea una instancia de ObjectContext.

    ' Create an ObjectContext instance based on SchoolEntity.
    Private schoolContext As SchoolEntities
    
    // Create an ObjectContext instance based on SchoolEntity.
    private SchoolEntities schoolContext;
    
  3. En el diseñador de formularios de CourseViewer, haga doble clic en el formulario CourseViewer.

    De esta forma se abre la página de código del formulario y se crea el método del controlador de eventos courseViewer _Load.

  4. En el método del controlador de eventos courseViewer _Load, copie y pegue el código siguiente que define la DataGridView, ejecuta una consulta que devuelve una colección de departamentos (ordenados por Name) y enlaza la colección de objetos Department al control departmentList.

    ' Initialize the ObjectContext.
    schoolContext = New SchoolEntities()
    
    ' Define a query that returns all Department objects and related
    ' Course objects, ordered by name.
    Dim departmentQuery As ObjectQuery(Of Department) = _
        schoolContext.Department.Include("Course").OrderBy("it.Name")
    
    Try
        ' Bind the ComboBox control to the query, which is 
        ' executed during data binding.
        Me.departmentList.DataSource = departmentQuery
        Me.departmentList.DisplayMember = "Name"
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
    
    // Initialize the ObjectContext.
    schoolContext = new SchoolEntities();
    
    // Define a query that returns all Department objects and related
    // Course objects, ordered by name.
    ObjectQuery<Department> departmentQuery =
        schoolContext.Department.Include("Course").OrderBy("it.Name");
    
    try
    {
        // Bind the ComboBox control to the query, which is
        // executed during data binding.
        this.departmentList.DataSource = departmentQuery;
        this.departmentList.DisplayMember = "Name";
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
    

Para mostrar cursos para el departamento seleccionado

  1. En el diseñador de formularios de CourseViewer, haga doble clic en el control departmentList.

    De este modo, se crea método del controlador de eventos departmentList_SelectedIndexChanged.

  2. Pegue el código siguiente que carga los cursos que están relacionados con el departamento seleccionado.

    Try
        ' Get the object for the selected department.
        Dim department As Department = _
            CType(Me.departmentList.SelectedItem, Department)
    
        ' Bind the grid view to the collection of Course objects 
        ' that are related to the selected Department object.
        courseGridView.DataSource = department.Course
        courseGridView.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells)
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
    
    try
    {
        // Get the object for the selected department.
        Department department = 
            (Department)this.departmentList.SelectedItem;
    
        // Bind the grid view to the collection of Course objects 
        // that are related to the selected Department object.
        courseGridView.DataSource = department.Course;
    
        courseGridView.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
    

Pasos siguientes

Ha creado correctamente consultas que devuelven objetos Department y Course, y los enlazan a los controles. Después, guardará los cambios efectuados en los objetos Course en la cuadrícula de datos de nuevo en la base de datos: Insertar y actualizar datos (Tutorial rápido de Entity Framework).

Vea también

Conceptos

Trabajar con datos de entidad

Otros recursos

Ejemplos (Entity Framework)
Servicios de objeto (Entity Framework)