Entity Framework - Entity Stored Procedure 활용(2)

Entity Framework에서 Stored Procedure를 다루는 방법에 대해서 앞 세션에서 다뤘는데 또 다른 방법이 있어 추가로 소개하고자 합니다. Visual Studio의 막강한 기능으로 대부분이 자동생성됩니다. 이번 시간도 아주 간단한 작업만으로 Entity Stored Procedure 다룰 수 있습니다. ~ 떠나보자구용~~

 

Stored Procedure

앞 세션에서 사용한 프로시져를 그대로 사용하겠습니다.

08_01.jpg

[그림 8-1] 프로시져 목록

 

Stored Procedure Entity 업데이트

EDM 프로시져를 가져오겠습니다. “update Model from Database…”메뉴를 클릭해주세요.

08_02.jpg

[그림 8-2] 모델 업데이트

 

추가할 해당 프로시져를 선택해주세요.

08_03.jpg

[그림 8-3] Stored Procedure 추가

 

기본적으로 엔티티 매핑 개체 추가 후 모델 브라우저를 보면 다음과 같이 트리가 구성됩니다.

08_04.jpg

[그림 8-4] 모델 브라우저 트리

 

가지고 온 프로시져를 엔티티의 함수로 가져오는 작업을 추가 해줘야합니다. 프로시져에서 다음과 같이 “Add Function Import…”메뉴를 선택합니다.

08_05.jpg

[그림 8-5] 모델 브라우저 트리 메뉴

 

함수 가져오는것은 스로시져에 함수명만 지정해주면 해당 함수명으로 자동으로 매핑이 됩니다..

08_06.jpg

[그림 8-6] 함수 가져오기 설정

 

3개 모두 함수 가져오기하면 엔티티의 함수 목록에 다음과 같이 출력됩니다. 이제 프로시져 가져오는 작업이 완료되었습니다.

08_07.jpg

[그림 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프로시져가 호출되어 데이터가 추가된 것을 확인 할 수 있습니다.

08_08.jpg

[그림 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프로시져가 호출되고 있는것을 확인 할 수 있습니다.

08_09.jpg

[그림 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프로시져가 호출되고 있습니다.

08_10.jpg

[그림 8-10] SQL Profiler 데이터 삭제

 

프로시져를 함수로 가져와서 메서드형태로 사용하는 것을 확인해보았습니다. 앞 세션에서 다룬것은 테이블 기준으로 프로시져를 활용하는 것이 었습니다. 테이블 기준이 아닌 프로시져를 사용할 경우는 이렇게 함수로 가져와서 작업을 하는게 편할 수도 있을것 같네요. 감사합니다.

소스 코드 : EF4.08.zip



Entity Framework, MyBatis.NET, NHibernate 강좌 리스트
[Entity Framework 강좌] 01. Entity Framework 들어가기
[Entity Framework 강좌] 02. Entity Framework 4.0 기능 살펴보기
[Entity Framework 강좌] 03. LINQ 알고가자
[Entity Framework 강좌] 04. Database-First VS Model-First
[Entity Framework 강좌] 05. Entity Framework Context
[Entity Framework 강좌] 06. Entity Framework - Entity CRUD
[Entity Framework 강좌] 07. Entity Framework - Entity Stored Procedure 활용(1)
[Entity Framework 강좌] 08. Entity Framework - Entity Stored Procedure 활용(2)
[Entity Framework 강좌] 09. Entity Framework – ASP.NET MVC(1)
[Entity Framework 강좌] 10. Entity Framework – ASP.NET MVC(2)
[Entity Framework 강좌] 11. Entity Framework – ASP.NET MVC(3)
[MyBatis강좌] 12. MyBatis.Net 들어가기
[MyBatis강좌] 13. MyBatis.NET 기본 및 환경 설정
[MyBatis강좌] 14. MyBatis.NET CRUD(1)
[MyBatis강좌] 15. MyBatis.NET CRUD(2)
[NHibernate강좌] 16. NHibernate 들어가기
[NHibernate강좌] 17. NHibernate xml 파일
[NHibernate강좌] 18. NHibernate 실전 - Object Relational Mapping
[NHibernate강좌] 19. NHibernate 실전 - CRUD(1)
[NHibernate강좌] 20. NHibernate 실전 - CRUD(2)







profile