Exportar (0) Imprimir
Expandir todo
Expandir Minimizar

Cómo: Consultar objetos con herencia de tabla por tipo (Entity Framework)

En este tema se muestra cómo ejecutar una consulta polimórfica utilizando el operador OfType.

Para ejecutar el código de este ejemplo

  1. Agregue el Modelo School al proyecto y configúrelo para usar Entity Framework . Para obtener más información, vea Cómo usar el Asistente para Entity Data Model (Entity Framework).

  2. Modifique el modelo conceptual para que tenga una herencia de tabla por tipo siguiendo los pasos descritos en Walkthrough: Mapping Inheritance - Table per Type.

Ejemplo

En el ejemplo siguiente se usa el método OfType para obtener y mostrar una colección de OnsiteCourses y una colección de OnlineCourses desde una colección de Courses. OnsiteCourses y OnlineCourses son tipos específicos de Courses.


try
{
    using (SchoolEntities context =
                          new SchoolEntities())
    {
        int departmentID = 7;
        // Get courses for the department with id 7.
        IQueryable<Course> courses = context.Departments
                .Where(d => d.DepartmentID == departmentID)
                .SelectMany(d => d.Courses);

        Console.WriteLine("All the courses for the selected department.");
        foreach (Course course in courses)
        {
            Console.WriteLine("CourseID: {0} ", course.CourseID);

        }
        var onlineCourses = courses.OfType<OnlineCourse>();
        Console.WriteLine("Online courses only for the selected department.");
        foreach (OnlineCourse onlineCourse in onlineCourses)
        {
            Console.WriteLine("CourseID: {0} ", onlineCourse.CourseID);

        }
        var onsiteCourses = courses.OfType<OnsiteCourse>();
        Console.WriteLine("Onsite courses only for the selected department.");
        foreach (OnsiteCourse onsite in onsiteCourses)
        {
            Console.WriteLine("CourseID: {0} ", onsite.CourseID);

        }
    }

}
catch (System.Data.MappingException e)
{
    Console.WriteLine(e.ToString());
}
catch (System.Data.EntityException e)
{
    Console.WriteLine(e.ToString());
}


Vea también

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft