Partager via


Procédure : exécuter une requête polymorphe (EntityClient)

Cette rubrique montre comment exécuter une requête Entity SQL polymorphe à l'aide de l'opérateur OFTYPE (Entity SQL).

Pour exécuter le code de cet exemple

  1. Ajoutez le Modèle School à votre projet et configurez votre projet de façon à utiliser Entity Framework. Pour plus d'informations, consultez Procédure : utiliser l'Assistant Entity Data Model (Entity Framework).

  2. Dans la page de codes de votre application, ajoutez les instructions using (Imports en Visual Basic) suivantes :

    Imports System
    Imports System.Collections.Generic
    Imports System.Collections
    Imports System.Data.Common
    Imports System.Data
    Imports System.IO
    Imports System.Data.SqlClient
    Imports System.Data.EntityClient
    Imports System.Data.Metadata.Edm
    
    using System;
    using System.Collections.Generic;
    using System.Collections;
    using System.Data.Common;
    using System.Data;
    using System.IO;
    using System.Data.SqlClient;
    using System.Data.EntityClient;
    using System.Data.Metadata.Edm;
    
  3. Modifiez le modèle conceptuel pour avoir un héritage TPH (table par hiérarchie) en suivant la procédure décrite dans Walkthrough: Mapping Inheritance - Table per Hierarchy.

Exemple

L'exemple ci-dessous utilise un opérateur OFTYPE pour obtenir et afficher une collection d'OnsiteCourses uniquement, à partir d'une collection de Courses.

Using conn As New EntityConnection("name=SchoolEntities")
    conn.Open()
    ' Create a query that specifies to 
    ' get a collection of only OnsiteCourses. 

    Dim esqlQuery As String = "SELECT VAlUE onsiteCourse FROM " & _
        "OFTYPE(SchoolEntities.Courses, SchoolModel.OnsiteCourse) AS onsiteCourse"
    Using cmd As New EntityCommand(esqlQuery, conn)
        ' Execute the command. 
        Using rdr As DbDataReader = cmd.ExecuteReader(CommandBehavior.SequentialAccess)
            ' Start reading. 
            While rdr.Read()
                ' Display OnsiteCourse's location. 
                Console.WriteLine("CourseID: {0} ", rdr("CourseID"))
                Console.WriteLine("Location: {0} ", rdr("Location"))
            End While
        End Using
    End Using
End Using
using (EntityConnection conn = new EntityConnection("name=SchoolEntities"))
{
    conn.Open();
    // Create a query that specifies to 
    // get a collection of only OnsiteCourses.

    string esqlQuery = @"SELECT VAlUE onsiteCourse FROM 
        OFTYPE(SchoolEntities.Courses, SchoolModel.OnsiteCourse) 
        AS onsiteCourse";
    using (EntityCommand cmd = new EntityCommand(esqlQuery, conn))
    {
        // Execute the command.
        using (DbDataReader rdr = cmd.ExecuteReader(CommandBehavior.SequentialAccess))
        {
            // Start reading.
            while (rdr.Read())
            {
                // Display OnsiteCourse's location.
                Console.WriteLine("CourseID: {0} ", rdr["CourseID"]);
                Console.WriteLine("Location: {0} ", rdr["Location"]);
            }
        }
    }
}

Voir aussi

Concepts

Fournisseur EntityClient pour Entity Framework
Langage Entity SQL