개발 이야기/ORM2012. 4. 15. 12:31

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


sqler에 아티클 작성 했던것을 공유합니다.

출처 : http://www.sqler.com/400566


Posted by 사나에