Freigeben über


Vorgehensweise: Ausführen einer parametrisierten Entity SQL-Abfrage mithilfe von „EntityCommand“

In diesem Thema wird gezeigt, wie eine Entity SQL-Abfrage, die über Parameter verfügt, mit einem EntityCommand-Objekt ausgeführt wird.

So führen Sie den Code in diesem Beispiel aus

  1. Fügen Sie das AdventureWorks Sales-Modell dem Projekt hinzu, und konfigurieren Sie das Projekt für die Verwendung von Entity Framework. Weitere Informationen finden Sie unter Gewusst wie: Verwenden des Entity Data Model-Assistenten.

  2. Fügen Sie der Codepage Ihrer Anwendung die folgenden using-Direktiven (Imports in Visual Basic) hinzu:

    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
    
    

Beispiel

Das folgende Beispiel zeigt, wie eine Abfragezeichenfolge mit zwei Parametern konstruiert wird. Zunächst wird ein EntityCommand erstellt, dann werden der EntityParameter-Auflistung dieses EntityCommand zwei Parameter hinzugefügt, und schließlich wird die Auflistung der Contact-Elemente durchlaufen.

using (EntityConnection conn =
    new EntityConnection("name=AdventureWorksEntities"))
{
    conn.Open();
    // Create a query that takes two parameters.
    string esqlQuery =
        @"SELECT VALUE Contact FROM AdventureWorksEntities.Contacts
                    AS Contact WHERE Contact.LastName = @ln AND
                    Contact.FirstName = @fn";

    using (EntityCommand cmd = new EntityCommand(esqlQuery, conn))
    {
        // Create two parameters and add them to
        // the EntityCommand's Parameters collection
        EntityParameter param1 = new EntityParameter();
        param1.ParameterName = "ln";
        param1.Value = "Adams";
        EntityParameter param2 = new EntityParameter();
        param2.ParameterName = "fn";
        param2.Value = "Frances";

        cmd.Parameters.Add(param1);
        cmd.Parameters.Add(param2);

        using (DbDataReader rdr = cmd.ExecuteReader(CommandBehavior.SequentialAccess))
        {
            // Iterate through the collection of Contact items.
            while (rdr.Read())
            {
                Console.WriteLine(rdr["FirstName"]);
                Console.WriteLine(rdr["LastName"]);
            }
        }
    }
    conn.Close();
}
Using conn As New EntityConnection("name=AdventureWorksEntities")
    conn.Open()
    ' Create a query that takes two parameters. 
    Dim esqlQuery As String = "SELECT VALUE Contact FROM AdventureWorksEntities.Contacts " & _
        " AS Contact WHERE Contact.LastName = @ln AND Contact.FirstName = @fn"

    Using cmd As New EntityCommand(esqlQuery, conn)
        ' Create two parameters and add them to 
        ' the EntityCommand's Parameters collection 
        Dim param1 As New EntityParameter()
        param1.ParameterName = "ln"
        param1.Value = "Adams"
        Dim param2 As New EntityParameter()
        param2.ParameterName = "fn"
        param2.Value = "Frances"

        cmd.Parameters.Add(param1)
        cmd.Parameters.Add(param2)

        Using rdr As DbDataReader = cmd.ExecuteReader(CommandBehavior.SequentialAccess)
            ' Iterate through the collection of Contact items. 
            While rdr.Read()
                Console.WriteLine(rdr("FirstName"))
                Console.WriteLine(rdr("LastName"))
            End While
        End Using
    End Using
    conn.Close()
End Using

Siehe auch