Entity Framework ile Store Procedure Kullanımı

Doğuhan Aydeniz tarafından yayınlanmıştır 18. Ocak 2010 07:41

Bugünler de bana da lazım olan, Entity Framework ile geliştirilen bir projede Store Procedure nasıl kullanılır sorusuna sizlerle birlikte cevap arayacağız.

Bu konuyu işlemek için kendimize bir örnek belirleyelim.

Mesela Database'imizde Category adlı bir tablo olsun ve yeni kayıt eklenirken Entity Framework bir Store Procedure kullanarak bu işi yapmasını sağlayalım.

Şimdi Category tablomuzu aşağıdaki gibi oluşturalım.



Tablomuzu oluşturduktan sonra sıra geldi bu tabloya yeni kayıt ekleme yapacak olan Store Procedure'ümüzü hazırlamaya.

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON

go

CREATE PROCEDURE [dbo].[sp_add_category]

(

@Slug nvarchar(250),

@Name nvarchar(250),

@Active bit,

@ImageUrl nvarchar(100),

@ParentCatId int

)

AS
BEGIN

SET NOCOUNT ON;
insert into Category (Slug, Name, Active, ImageUrl, ParentCatId)
values

(@Slug, @Name, @Active, @ImageUrl, @ParentCatId)

END



Önceki yazılarımda bir projeye Entity Data Model nasıl eklenir işlemiştik o yüzden buraları es geçerek projemizde bir Entity Data Model var olduğunu düşünelim. O halde modelimize ilgili Database'de ki Tablo ve Store Procedure'ü ekleyelim.

Model Browser'ınızın içinde sağ tıklayın ve Update Model From Database seçeneğini seçerek devam edelim. Karşımıza şöyle bir ekran gelecektir.



 

Finish dedikten sonra Model Browser'ımızın son hali aşağıdaki gibi olmuştur.



Entity Model'imize ilgili öğeleri ekledikten sonra asıl yapmak istediğimiz konuyu hatırlayalım neydi bu;
Category tablosuna yeni kayıt ekleneceği zaman Entity Model'imizden SQL'e bir sorgu cümlesi değil de bir Store Procedure aracılığı ile yeni kayıt eklenmesini sağlamak.

Buraya kadar herşey tamam ise şimdi artık Category Entity'mize ilgili store procedure'ü insert function olarak tanımlama işlemini gerçekleştirelim.

Category Entity nesnemize sağ tıklayın, çıkan pencereden Stored Procedure Mapping seçeneğini tıklayın.




Tıklandıktan sonra ekranın altında Mapping Details paneli açılacaktır.

Açıldıktan sonra aşağıdaki gibi 3 tane fonksiyon tipini göreceksiniz. (Insert, Update, Delete) Bunlara istediğimiz Store Procedure'lerimizi bağlayabiliyoruz.

Bizim ki Insert Function, aşağıdaki animasyonlu resimde de adımları göreceğiniz gibi dropdown'a tıkladığımız zaman DB'den Entity Model'e yüklediğimiz 'sp_add_category' adlı store procedure listelenmektedir. Biz bunu seçiyoruz ve seçtikten sonra Ctrl + S yapıp Modelimizi kaydediyoruz. Bu sayede artık Entity Modeliniz üzerinden her zaman yaptığınız gibi bir kayıt ekleme işlemini SQL sorgusu ile değil bir Store Procedure aracılığı ile gerçekleştirecektir.

 

ÖNEMLİ : Dikkat edilmesi gereken bir husus var Store Procedure'ünüzde aldığınız parametrelerin adları tablodaki alan adları ile yani entity nesnenizdeki property'lerin adları ile uyuşmaz ise yukarıdaki resimde 3.ncü adıma geldiğinizde Property alanından paremetrenin entity nesnenizdeki hangi property ile eşleşeceğini bildirmeniz gereklidir.

Bir başka paylaşımımda görüşmek üzere arkadaşlar, umarım yararlı olmuştur.

9 kişi tarafından 4.4 olarak değerlendirildi

  • Currently 4,444445/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler: , , , ,

C# | Entity Framework



Bu site BlogEngine.NET 1.4.5.0 ile oluşturulmuştur. Türkçe çevirisi BlogEngine TR ekibi tarafından yapılmıştır.