Gewusst wie: Ausführen einer Abfrage mit einer gespeicherten Prozedur mit In- und Out-Parametern (Entity Framework)

Dieses Thema enthält zwei Beispiele, die zeigen, wie in Entity Framework eine parametrisierte gespeicherte Prozedur ausgeführt wird. Im ersten Beispiel wird ein Eingabeparameter verwendet und eine Auflistung von Entitätsobjekten zurückgegeben. Im zweiten Beispiel wird ein Eingabeparameter und ein Ausgabeparameter verwendet und ein Wert im Ausgabeparameter zurückgegeben. Die Beispiele in diesem Thema beruhen auf dem Modell "School". Fügen Sie dem Projekt Modell "School" den Beispielen entsprechend 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 (Entity Framework).

Beispiel

Der folgende Code führt eine gespeicherte GetStudentGrades-Prozedur aus. Dabei ist StudentId ein erforderlicher Parameter. Zum Ausführen dieses Codebeispiels importieren Sie die gespeicherte Prozedur GetStudentGrades und geben CourseGrade-Entitäten als Rückgabetyp an. Informationen zum Importieren einer gespeicherten Prozedur finden Sie unter How to: Import Stored Procedures.

' Specify the Student ID. 
Dim studentId As Integer = 2

Using context As New SchoolEntities()
    For Each grade As StudentGrade In context.GetStudentGrades(studentId)
        Console.WriteLine("StudentID: " & studentId)
        Console.WriteLine("Student grade: " & grade.Grade)


    Next
End Using
// Specify the Student ID.
int studentId = 2;

using (SchoolEntities context =
    new SchoolEntities())
{
    foreach (StudentGrade grade in
              context.GetStudentGrades(studentId))
    {
        Console.WriteLine("StudentID: " + studentId);
        Console.WriteLine("Student grade: " + grade.Grade);
    }
}

Im folgenden Code wird die gespeicherte GetDepartmentName-Prozedur ausgeführt, die den Namen der Abteilung im Ausgabeparameter zurückgibt. So führen Sie dieses Codebeispiel aus:

  1. Fügen Sie der Datenbank "School" folgende Prozedur hinzu:

    CREATE PROCEDURE [dbo].[GetDepartmentName]
          @ID int,
          @Name nvarchar(50) OUTPUT
          AS
          SELECT @Name = Name FROM Department
          WHERE DepartmentID = @ID
    
  2. Aktualisieren Sie das Modell "School" aus der Datenbank, indem Sie die gespeicherte Prozedur GetDepartmentName hinzufügen. Weitere Informationen finden Sie unter How to: Update an .edmx File when the Database Changes.

  3. Importieren Sie die gespeicherte Prozedur GetDepartmentName, und geben Sie als Rückgabetyp der gespeicherten Prozedur Keiner an. Weitere Informationen finden Sie unter How to: Import a Stored Procedure.

Using context As New SchoolEntities()
    ' name is an output parameter. 
    Dim name As New ObjectParameter("Name", GetType(String))
    context.GetDepartmentName(1, name)

    Console.WriteLine(name.Value)
End Using
using (SchoolEntities context =
    new SchoolEntities())
{
    // name is an output parameter.
    ObjectParameter name = new ObjectParameter("Name", typeof(String));
    context.GetDepartmentName(1, name);
    Console.WriteLine(name.Value);

}