방법: 입력 및 출력 매개 변수와 함께 저장 프로시저를 사용하여 쿼리 실행(Entity Framework)
이 항목에서는 Entity Framework 를 사용하여 매개 변수가 있는 저장 프로시저를 실행하는 방법에 대한 두 가지 예제를 제공합니다. 첫 번째 예제에서는 하나의 입력 매개 변수를 사용하고 엔터티 개체의 컬렉션을 반환합니다. 두 번째 예제에서는 하나의 입력 매개 변수 및 하나의 출력 매개 변수를 사용하고 출력 매개 변수에서 값을 반환합니다. 이 항목의 예제는 School 모델을 기반으로 합니다. 이러한 예제를 수행하려면 School 모델을 프로젝트에 추가하고 프로젝트에서 Entity Framework 를 사용하도록 구성합니다. 자세한 내용은 방법: 엔터티 데이터 모델 마법사 사용(Entity Framework)을 참조하십시오.
예제
다음 코드에서는 StudentId가 필수 매개 변수인 GetStudentGrades 저장 프로시저를 실행합니다. 이 코드 예제를 실행하려면 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);
}