방법: 입력 및 출력 매개 변수와 함께 저장 프로시저를 사용하여 쿼리 실행(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 저장 프로시저를 실행합니다. 이 코드 예제를 실행하려면

  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);

}