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
ストアド プロシージャを実行します。 このコード例を実行するには、次の操作を行います。
次のプロシージャを School データベースに追加します。
CREATE PROCEDURE [dbo].[GetDepartmentName] @ID int, @Name nvarchar(50) OUTPUT AS SELECT @Name = Name FROM Department WHERE DepartmentID = @ID
GetDepartmentName
ストアド プロシージャを追加して、データベースの School モデルを更新します。 詳細については、「How to: Update an .edmx File when the Database Changes」を参照してください。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);
}