Share via


Procédure : exécuter une requête à l'aide d'une procédure stockée avec des paramètres d'entrée et de sortie (Entity Framework)

Cette rubrique fournit deux exemples illustrant comment exécuter une procédure stockée paramétrable avec Entity Framework . Le premier exemple accepte un paramètre d'entrée et retourne une collection d'objets entité. Le second exemple accepte un paramètre d'entrée et un paramètre de sortie et retourne une valeur dans le paramètre de sortie. Les exemples de cette rubrique sont basés sur le modèle School. Pour suivre ces exemples, ajoutez le Modèle School à votre projet et configurez votre projet pour utiliser Entity Framework . Pour plus d'informations, consultez Procédure : utiliser l'Assistant Entity Data Model (Entity Framework).

Exemple

Le code suivant exécute une procédure stockée GetStudentGrades dans laquelle StudentId est un paramètre requis. Pour exécuter cet exemple de code, importez la procédure stockée GetStudentGrades et spécifiez des entités CourseGrade comme type de retour. Pour plus d'informations sur la manière d'importer une procédure stockée, consultez 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);
    }
}

Le code suivant exécute la procédure stockée GetDepartmentName qui retourne le nom du service dans le paramètre de sortie. Pour exécuter cet exemple de code :

  1. ajoutez la procédure suivante à la base de données School :

    CREATE PROCEDURE [dbo].[GetDepartmentName]
          @ID int,
          @Name nvarchar(50) OUTPUT
          AS
          SELECT @Name = Name FROM Department
          WHERE DepartmentID = @ID
    
  2. Mettez à jour le modèle School de la base de données en ajoutant la procédure stockée GetDepartmentName. Pour plus d'informations, consultez How to: Update an .edmx File when the Database Changes.

  3. Importez la procédure stockée GetDepartmentName et spécifiez None comme type de retour pour cette procédure stockée. Pour plus d'informations, consultez 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);

}