[Entity Framework 강좌] 07. Entity Framework - Entity Stored Procedure 활용(1)
Entity Framework - Entity Stored Procedure 활용(1)
앞 세션에서 Entity Framework의 Entity CRUD 작업에 대해서 알아보았습니다. 앞 세션에서 엔티티 작업은 실제로 Ad-Hoc Query를 사용합니다. 이번에는 Stored Procedure를 사용하여 데이터 작업하는 것을 확인해보겠습니다.
기본 Stored Procedure 생성
이번 내용을 확인해보기 위해 필요한 프로시져 스크립트입니다. Northwind 데이터베이스에 생성해주세요~
USE Northwind
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Description: 신규생성 -- ============================================= CREATE PROCEDURE Shippers_INSERT @CompanyName nvarchar(40), @Phone nvarchar(24) AS BEGIN SET NOCOUNT ON;
INSERT INTO [Northwind].[dbo].[Shippers] ([CompanyName],[Phone]) VALUES (@CompanyName, @Phone)
END GO
-- ============================================= -- Description: 수정 -- ============================================= CREATE PROCEDURE Shippers_UPDATE @ShipperID INT, @CompanyName nvarchar(40), @Phone nvarchar(24) AS BEGIN SET NOCOUNT ON;
UPDATE [Northwind].[dbo].[Shippers] SET [CompanyName] = @CompanyName, [Phone] = @Phone WHERE ShipperID = @ShipperID
END GO
-- ============================================= -- Description: 삭제 -- ============================================= CREATE PROCEDURE Shippers_DELETE @ShipperID INT AS BEGIN SET NOCOUNT ON;
DELETE FROM [Northwind].[dbo].[Shippers] WHERE ShipperID = @ShipperID
END GO
|
Stored Procedure Entity 업데이트
EDM 프로시져를 가져오겠습니다. “update Model from Database…”메뉴를 클릭해주세요.
[그림 7-1] 모델 업데이트
앞에서 생성한 프로시져를 선택해주세요.
[그림 7-2] Stored Procedure 추가
프로시져를 가져왔다면 엔티티 매핑 작업을 진행해주세요. EDM에서 매핑 상세에서 “Shippers” 엔티티의 프로시져 항목을 클릭하면 다음과 같은 화면이 나옵니다. Insert, Update, Delete에 맞는 프로시져를 맞춰서 설정해주면 자동으로 매핑이 됩니다.
[그림 7-3] 엔티티 매핑
믿기지않겠지만,,, 다 끝났습니다.^^
Entity 생성(Insert)
소스 코드를 보면 아시겠지만 앞 세션에서 다룬 엔티티 생성 코드와 동일합니다.
private void btnInsert_Click(object sender, EventArgs e) { using (var context = new NorthwindEntities()) { Shippers shipper = new Shippers(); shipper.CompanyName = "test 11"; shipper.Phone = "(02)123-1234"; context.Shippers.AddObject(shipper); context.SaveChanges(); MessageBox.Show("record inserted"); } }
|
SQL Profiler에서 확인하면 “Shippers_INSERT” 프로시져가 호출되어 데이터가 추가된 것을 확인 할 수 있습니다.
[그림 7-4] SQL Profiler 데이터 추가
Entity 수정(Update)
엔티티 데이터 수정도 마찬가지입니다. 특정 항목에 대해서 데이터를 수정하고 SaveChange메서드를 호출하여 최종적으로 데이터베이스에 반영하는 액션을 취합니다.
private void btnUpdate_Click(object sender, EventArgs e) { using (var context = new NorthwindEntities()) { var per = context.Shippers.Where(p => p.ShipperID == 7).First(); per.CompanyName = "JYP Company 77"; per.Phone = "(02)123-1234"; context.SaveChanges(); MessageBox.Show("record updated"); } }
|
SQL Profiler에서 확인해보죠. “Shippers_UPDATE” 프로시져가 호출되고 있네요.
[그림 7-5] SQL Profiler 데이터 수정
Entity 삭제(Delete)
데이터 삭제하는 부분도 확인해보겠습니다.
private void btnDelete_Click(object sender, EventArgs e) { using (var context = new NorthwindEntities()) { var shipper = context.Shippers.Where(p => p.ShipperID == 9).First(); context.DeleteObject(shipper); context.SaveChanges();
MessageBox.Show("record deleted"); } }
|
역시 “Shippers_DELETE” 프로시져가 호출되고 있습니다.^^
[그림 7-6] SQL Profiler 데이터 삭제
이번에 알아본것은 간단히 요약하자만 특정 엔티티 기준에서 데이터 작업을 할 경우 Stored Procedure를 사용하는 것을 확인해봤습니다. 현업에서는 Stored Procedure를 활용을 많이 하기때문에 알아두시면 유용하게 사용될거라 생각됩니다 ㅋㅋ 이번 세션은 여기까지~ 읽어주셔서 감사합니다. (_._)꾸벅
소스 코드 : EF4.07.zip
sqler에 아티클 작성 했던것을 공유합니다. 출처 : http://www.sqler.com/400553