Entity Framework - Entity Stored Procedure 활용(2)
Entity Framework에서 Stored Procedure를 다루는 방법에 대해서 앞 세션에서 다뤘는데 또 다른 방법이 있어 추가로 소개하고자 합니다. Visual Studio의 막강한 기능으로 대부분이 자동생성됩니다. 이번 시간도 아주 간단한 작업만으로 Entity Stored Procedure 다룰 수 있습니다. 자~ 떠나보자구용~~
Stored Procedure
앞 세션에서 사용한 프로시져를 그대로 사용하겠습니다.
[그림 8-1] 프로시져 목록
Stored Procedure Entity 업데이트
EDM 프로시져를 가져오겠습니다. “update Model from Database…”메뉴를 클릭해주세요.
[그림 8-2] 모델 업데이트
추가할 해당 프로시져를 선택해주세요.
[그림 8-3] Stored Procedure 추가
기본적으로 엔티티 매핑 개체 추가 후 모델 브라우저를 보면 다음과 같이 트리가 구성됩니다.
[그림 8-4] 모델 브라우저 트리
가지고 온 프로시져를 엔티티의 함수로 가져오는 작업을 추가 해줘야합니다. 프로시져에서 다음과 같이 “Add Function Import…”메뉴를 선택합니다.
[그림 8-5] 모델 브라우저 트리 메뉴
함수 가져오는것은 스로시져에 함수명만 지정해주면 해당 함수명으로 자동으로 매핑이 됩니다..
[그림 8-6] 함수 가져오기 설정
3개 모두 함수 가져오기하면 엔티티의 함수 목록에 다음과 같이 출력됩니다. 이제 프로시져 가져오는 작업이 완료되었습니다.
[그림 8-7] 모델 브라우저 트리 – 함수 가져오기
Entity 생성(Insert)
추가했던 함수명이 컨텍스트에서 메서드로 제공된다. 제공된 메서드에 맞춰 파라메터를 넣어주면 됩니다.
private void btnInsert_Click(object sender, EventArgs e) { using (var context = new NorthwindEntities()) { context.Shippers_INSERT("SM Company", "(031)123-1234"); MessageBox.Show("record inserted"); } }
|
SQL Profiler에서 확인하면 “Shippers_INSERT” 프로시져가 호출되어 데이터가 추가된 것을 확인 할 수 있습니다.
[그림 8-8] SQL Profiler 데이터 추가
Entity 수정(Update)
수정하는 “Shippers_UPDATE” 메서드를 호출하여 엔티티 수정을 합니다.
private void btnUpdate_Click(object sender, EventArgs e) { using (var context = new NorthwindEntities()) { context.Shippers_UPDATE(2, "United Package_Modify", "(503) 555-3190"); MessageBox.Show("record updated"); } }
|
SQL Profiler에서 확인하면 “Shippers_UPDATE” 프로시져가 호출되고 있는것을 확인 할 수 있습니다.
[그림 8-9] SQL Profiler 데이터 수정
Entity 삭제(Delete)
“Shippers_DELETE” 메서드를 호출하여 데이터 삭제를 합니다.
private void btnDelete_Click(object sender, EventArgs e) { using (var context = new NorthwindEntities()) { context.Shippers_DELETE(10); MessageBox.Show("record deleted"); } }
|
10으로 파라메터를 할당한 “Shippers_DELETE” 프로시져가 호출되고 있습니다.
[그림 8-10] SQL Profiler 데이터 삭제
프로시져를 함수로 가져와서 메서드형태로 사용하는 것을 확인해보았습니다. 앞 세션에서 다룬것은 테이블 기준으로 프로시져를 활용하는 것이 었습니다. 테이블 기준이 아닌 프로시져를 사용할 경우는 이렇게 함수로 가져와서 작업을 하는게 편할 수도 있을것 같네요. 감사합니다.
소스 코드 : EF4.08.zip
sqler에 아티클 작성 했던것을 공유합니다.
출처 : http://www.sqler.com/400566