이번 실습에서는 Entity Framework 4에서 EDM에 저장 프로시저 등록 후 웹 페이지에서 호출하는 샘플 코드를 보여드리도록 하겠습니다.
1. 샘플 데이터베이스인 NORTHWIND.MDF 파일에는 SalesByCategory라는 저장 프로시저가 있습니다. 이를 아래 그림과 같이 Visual Studio 2010의 서버 탐색기에서 확인할 수 있습니다.
2. SalesByCategory 저장 프로시저는 2개의 매개변수와 ProductName과 TotalPurchase의 2개의 컬럼값을 가지는 레코드셋을 반환합니다.
3. NorthwindModel.edmx 파일에는 기본적으로 테이블 형태의 개체만 그래픽 환경으로 제공합니다. 만약, 저장 프로시저를 Entity Designer에 등록하려면, edmx 파일에 마우스 오른쪽 버튼을 클릭한 후 나타나는 메뉴에서 [데이터베이스에서 모델 업데이트] 메뉴를 선택하면 됩니다.
4. [업데이트 마법사] 메뉴에서 아래 그림과 같이 추가 탭의 테이블, 뷰, 저장 프로시저 선택 화면 중 우리가 연습해 볼 SalesByCategory 저장 프로시저를 선택한 후 [마침] 버튼을 클릭하면 EDM에 저장 프로시저가 등록이 됩니다.
5. EDM에 등록된 저장 프로시저 목록을 보고자한다면, 보기-다른 창-엔터티 데이터 모델 브라우저 메뉴를 사용하시면 됩니다.
6. 또는 Entity Designer의 마우스 오른쪽 버튼 눌렀을 때 나타나는 컨텍스트 메뉴중에서 [모델 브라우저]를 선택하셔도 됩니다.
7. Model 브라우저에 정상적으로 등록된 SalesByCategory 저장 프로시저를 확인합니다. 만약, 목록이 나타나지 않는다면, 현재 프로젝트를 빌드 후 다시 열어보시면 나타납니다.
8. 등록된 저장 프로시저를 확장시켜보면, 입력 매개변수를 확인할 수 있습니다.
9. 저장 프로시저에 대한 반환값을 처리하기 위해서는 저장 프로시저 이름에 마우스 오른쪽 버튼을 클릭하면 [함수 가져오기 추가…] 메뉴가 나타납니다. 이를 클릭합니다.
10. [함수 가져오기 추가] 화면에서는 저장 프로시저를 닷넷의 어떤 메서드(함수)로 가져올 지를 결정할 수 있습니다.
11. [함수 가져오기 추가] 화면에서 [열 정보 가져오기] 버튼을 클릭하면, 출력 반환값으로 넘겨주는 2개의 열 정보가 노출이되며, 이를 사용하기 위해서는 [새 복합 형식 만들기] 버튼을 클릭하면, 이에 대한 반환값 타입을 자동으로 만들어 줍니다.
12. 맨 아래의 [새 복합 형식 만들기] 버튼을 클릭하였을 때, _Result 접미사를 가지는 복합 형식이 하나 자동으로 만들어집니다. 이에 대한 결과 화면은 아래와 같습니다.
13. 복합 형식을 만들고 나서 다시 Model 브라우저로 돌아온 후 [복합 형식] 노드를 확장 시켜보면, 아래 그림처럼, SalesByCategory_Result라는 복합 형식이 만들어져 있음을 확인할 수 있습니다.
14. 이제 우리가 만들어놓은 저장 프로시저와 동일한 이름을 갖는 메서드를 테스트해보기 위해서 웹 폼을 프로젝트에 추가합니다.
15. 웹 폼의 태그 영역에는 아래와 같이 간단히 ctlSalesByCategory란 이름의 GridView 컨트롤 하나만 등록합니다.
16. F7번을 눌러 코드 비하인드 파일로 이동을 해서 아래 코드 샘플처럼, NorthwindEntities() 개체 생성 후 SalesByCategory() 메서드에 2개의 샘플 매개변수를 전달해서 호출해 봅니다.
17. UsingStoredProcedure.aspx 페이지를 웹 브라우저로 확인해보면, 저장 프로시저의 결과값이 메서드를 통해서 정상적으로 호출됨을 알 수 있습니다. SQL Profiler를 통해서 현재 상태를 추적해보면, 저장 프로시저가 정상적으로 실행됩니다.
이로써 간단히 ADO.NET Entity Framework 4를 사용하여 SQL Server의 저장 프로시저를 모델에 등록 후 메서드화시켜서 응용 프로그램에서 사용하는 예를 살펴보았습니다.
현재 실습의 전체 소스는 아래 링크를 통해서 다운로드 받으실 수 있습니다.
다운로드
끝.