Share via


IN および OUT パラメーターとストアド プロシージャを使用してクエリを実行する方法 (Entity Framework)

このトピックでは、Entity Framework を使用して、パラメーター化されたストアド プロシージャを実行する方法について 2 つの例を示します。 最初の例では、入力パラメーターを 1 つ受け取り、エンティティ オブジェクトのコレクションを返します。 2 番目の例は、入力パラメーターと出力パラメーターをそれぞれ 1 つ受け取り、出力パラメーターで値を返します。 このトピックのこれらの例は、School Model に基づいています。 To follow these examples, add the School モデル to your project and configure your project to use the Entity Framework . 詳細については、「Entity Data Model ウィザードを使用する方法 (Entity Framework)」を参照してください。

次のコードは、GetStudentGrades ストアド プロシージャを実行します。ここで、StudentId は必須パラメーターです。 このコード例を実行するには、GetStudentGrades ストアド プロシージャをインポートし、戻り値の型として CourseGrade エンティティを指定します。 ストアド プロシージャのインポート方法の詳細については、「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);
    }
}

次のコードは、出力パラメーターで部署の名前を返す GetDepartmentName ストアド プロシージャを実行します。 このコード例を実行するには、次の操作を行います。

  1. 次のプロシージャを School データベースに追加します。

    CREATE PROCEDURE [dbo].[GetDepartmentName]
          @ID int,
          @Name nvarchar(50) OUTPUT
          AS
          SELECT @Name = Name FROM Department
          WHERE DepartmentID = @ID
    
  2. GetDepartmentName ストアド プロシージャを追加して、データベースの School モデルを更新します。 詳細については、「How to: Update an .edmx File when the Database Changes」を参照してください。

  3. GetDepartmentName ストアド プロシージャをインポートし、このストアド プロシージャの戻り値の型として [なし] を指定します。 詳細については、「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);

}