Share via


방법: 저장 프로시저로 모델 정의(Entity Framework)

데이터베이스에 정의된 저장 프로시저는 개념적 모델에서 두 가지 방식으로 노출될 수 있습니다.

  • 개념적 모델에서 저장 프로시저에 매핑되는 Function Import를 만들 수 있습니다. 이렇게 하면 데이터베이스의 저장 프로시저를 실행하는 메서드를 ObjectContext에 대해 정의할 수 있습니다. 저장 프로시저를 정의하는 방법에 따라 해당하는 Function Import가 엔터티 형식이나 복합 형식을 반환할 수 있습니다.

  • 엔터티 형식의 삽입, 업데이트 및 삭제 작업을 저장 프로시저에 매핑할 수 있습니다. 이렇게 하면 엔터티 형식에 대한 사용자 지정 삽입, 업데이트 및 삭제 동작을 정의할 수 있습니다.

    Bb896279.note(ko-kr,VS.100).gif참고:
    엔터티 형식의 삽입, 업데이트 및 삭제 작업 중 일부를 저장 프로시저에 매핑하지 않은 경우 런타임에 실행하면 매핑되지 않은 작업이 실패하고 UpdateException이 throw됩니다.

이 항목에서는 데이터베이스의 저장 프로시저에 매핑되는 Function Import를 개념적 모델에서 만드는 방법에 대해 설명합니다. 엔터티 형식의 삽입, 업데이트 및 삭제 작업을 저장 프로시저에 매핑하는 방법은 방법: 수정 저장 프로시저로 모델 정의(Entity Framework)를 참조하십시오.

저장 프로시저에 매핑되는 Function Import를 만들려면 ADO.NET Entity Data Model Tools를 사용하는 것이 좋습니다. 엔터티 데이터 모델 도구를 사용하는 방법은 다음 항목을 참조하십시오.

또한 모델 및 매핑 파일을 수동으로 편집하여 저장 프로시저에 매핑되는 Function Import를 만들 수도 있습니다. 이 항목의 예제에서는 School 샘플 데이터베이스School 모델을 기반으로 이 작업을 수행하는 방법을 보여 줍니다. School 데이터베이스에서 School 모델을 생성하는 방법은 EDM 생성기(EdmGen.exe)를 참조하십시오. 데이터베이스에서 저장 프로시저를 정의했다고 가정하는 경우, 저장 프로시저에 매핑되는 Function Import를 만들기 위한 기본 단계는 다음과 같습니다.

  1. 데이터베이스의 저장 프로시저를 지정하는 Function 요소를 저장소 모델에 추가합니다.

  2. 개념적 모델의 Function Import를 지정하는 FunctionImport 요소를 개념적 모델에 추가합니다.

  3. 개념적 모델의 Function Import를 저장소 모델의 함수에 매핑하는 FunctionImportMapping 요소를 매핑 파일에 추가합니다.

이 항목의 절차에서는 Function, FunctionImportFunctionImportMapping 요소를 만들어 다음 저장 프로시저를 개념적 모델로 가져오는 방법에 대해 설명합니다.

IF NOT EXISTS (SELECT * FROM sys.objects 
            WHERE object_id = OBJECT_ID(N'[dbo].[GetStudentGrades]') 
            AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'
CREATE PROCEDURE [dbo].[GetStudentGrades]
            @StudentID int
            AS
            SELECT EnrollmentID, Grade, CourseID, StudentID FROM dbo.StudentGrade
            WHERE StudentID = @StudentID
' 
END
GO

저장소 모델에 Function 요소를 추가하려면

  1. 저장소 모델(.ssdl 파일)을 엽니다.

  2. 다음 Function 요소를 Schema 요소의 자식으로 추가합니다.

    <Function Name="GetStudentGrades" Aggregate="false" BuiltIn="false" 
              NiladicFunction="false" IsComposable="false" 
              ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo">
      <Parameter Name="StudentID" Type="int" Mode="In" />
    </Function>
    

개념적 모델에 FunctionImport 요소를 추가하려면

  1. 개념적 모델(.csdl 파일)을 엽니다.

  2. 다음 FunctionImport 요소를 EntityContainer 요소의 자식으로 추가합니다.

    <FunctionImport Name="GetStudentGrades" EntitySet="StudentGrades" 
                    ReturnType="Collection(SchoolModel.StudentGrade)">
      <Parameter Name="StudentID" Mode="In" Type="Int32" />
    </FunctionImport>
    

매핑 파일에 FunctionImportMapping 요소를 추가하려면

  1. 매핑 파일(.msl 파일)을 엽니다.

  2. 다음 FunctionImportMapping 요소를 EntityContainerMapping 요소의 자식으로 추가합니다.

    <FunctionImportMapping FunctionImportName="GetStudentGrades" 
                           FunctionName="SchoolModel.Store.GetStudentGrades" />
    

참고 항목

기타 리소스

고급 데이터 모델 정의(Entity Framework 작업)
How to: Define Custom Functions in the Storage Model
CSDL, SSDL 및 MSL 사양