Delen via


Procedure: Een polymorfe query uitvoeren

In dit onderwerp wordt beschreven hoe u een polymorfe Entiteit SQL-query uitvoert met behulp van de operator OFTYPE .

De code in dit voorbeeld uitvoeren

  1. Voeg het schoolmodel toe aan uw project en configureer uw project om het Entity Framework te gebruiken. Zie De wizard Entiteitsgegevensmodel gebruiken voor meer informatie.

  2. Voeg op de codepagina voor uw toepassing de volgende using instructies toe (Imports in Visual Basic):

    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Data.Common;
    using System.Data.EntityClient;
    using System.Data.Metadata.Edm;
    
    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
    
    
  3. Wijzig het conceptuele model om een overname van tabellen per hiƫrarchie te hebben door de stappen in Walkthrough te volgen: Overname van toewijzing - Tabel per hiƫrarchie.

Opmerking

In het volgende voorbeeld wordt een OFTYPE-operator gebruikt om een verzameling van alleen OnsiteCourses een verzameling Coursesop te halen en weer te geven.

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"]);
            }
        }
    }
}
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

Zie ook