Freigeben über


Gewusst wie: Ausführen einer polymorphen Abfrage (EntityClient)

In diesem Thema ist dargestellt, wie eine polymorphe Entity SQL-Abfrage mithilfe des OFTYPE-Operators ausgeführt wird.

So führen Sie den Code in diesem Beispiel aus

  1. Erstellen Sie die CourseManager-Anwendung. Weitere Informationen und Anweisungen finden Sie unter Entity Framework-Schnellstart.

  2. Bearbeiten Sie das EDM, indem Sie die Anweisungen im Abschnitt Implementieren der "Tabelle pro Hierarchie"-Vererbung unter Exemplarische Vorgehensweise: Mappingvererbung – 'Tabelle pro Hierarchie' ausführen.

Beispiel

Ein OFTYPE-Ausdruck stellt einen Typausdruck dar, der angegeben wird, um einen Typtest für jedes Element einer Auflistung durchzuführen. Der OFTYPE-Ausdruck liefert eine neue Auflistung des angegebenen Typs, die nur die zu diesem Typ oder einem seiner Untertypen äquivalenten Elemente enthält. Wenn beispielsweise Manager ein Untertyp von Employee ist, liefert der folgende Ausdruck nur die "Manager" aus einer Auflistung der "Employee" (Mitarbeiter):

OfType(employees, Manager)

Im folgenden Beispiel wird ein OFTYPE-Operator verwendet, um eine Auflistung der Students aus einer Auflistung von People abzurufen und anzuzeigen.

Using connection As EntityConnection = New EntityConnection("name= SchoolEntities ")
    connection.Open()

    ' Create a query that specifies to 
    ' get a collection of Students
    ' with enrollment dates from
    ' a collection of People.
    Dim esqlQuery As String = "SELECT Student.LastName, " & _
            " Student.EnrollmentDate FROM " & _
            " OFTYPE(SchoolEntities.Person, " & _
            " SchoolModel.Student) AS Student "

    ' Create an EntityCommand and pass the connection object 
    ' and Enity SQL query to its constructor.
    Using command As EntityCommand = New EntityCommand(esqlQuery, connection)
        ' Execute the command.
        Using reader As DbDataReader = command.ExecuteReader(CommandBehavior.SequentialAccess)
            ' Start reading.
            Do While reader.Read
                ' Display student's last name and enrollment date.
                Console.Write(reader.Item("LastName"))
                Console.WriteLine(reader.Item("EnrollmentDate"))
            Loop
        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 Students
    // with enrollment dates from 
    // a collection of People.
    string esqlQuery = @"SELECT Student.LastName, 
        Student.EnrollmentDate FROM 
        OFTYPE(SchoolEntities.Person, 
        SchoolModel.Student) AS Student";

    using (EntityCommand cmd = new EntityCommand(esqlQuery, conn))
    {
        // Execute the command.
        using (DbDataReader rdr = cmd.ExecuteReader(CommandBehavior.SequentialAccess))
        {
            // Start reading.
            while (rdr.Read())
            {
                // Display student's last name and enrollment date.
                Console.Write(rdr["LastName"] + " ");
                Console.WriteLine(rdr["EnrollmentDate"]);
            }
        }
    }
}

Siehe auch

Aufgaben

Gewusst wie: Erstellen und Ausführen von Objektabfragen mithilfe der 'Tabelle pro Hierarchie'-Vererbung (Entity Framework)

Konzepte

Entity SQL-Sprache

Weitere Ressourcen

Arbeiten mit EntityClient (Entity Framework-Aufgaben)
How to: Execute an Entity SQL Query Using EntityCommand