Entity Framework (Varlık Altyapısı) ile Stored Procedure (Saklı Yordam) Kullanımı

Eyl 06, 2013

Stored Procedures (Saklı Yordamlar)

Stored Procedures (Saklı Yordamlar), veri tabanı içerisinde belirli bir işi yapmak üzere özelleşmiş, derlenmiş olarak saklanan SQL (Structured Query Language - Yapısal Sorgulama Dili) ifadelerinden oluşan kümelerdir. Bir saklı yordam, birden çok program tarafından aynı isimle çağırılabilir ve kullanılabilir. Stored Procedure kullanımı, veriye erişim kontrolü sağlamakla birlikte bilginin tutarlı bir şekilde girilmesini dolayısıyla da veri bütünlüğünü sağlamaktadır. Çalıştırılmak istenen SQL ifadeleri,  bir küme halinde Stored Procedure içerisine yerleştirilerek bir veri tabanı nesnesi haline getirilirler. Böylece Stored Procedure, çalıştırıldığında doğrudan veri tabanı yöneticisinin bulunduğu sunucuda işlem yapar. Stored Procedure kümeleri veri tabanı sunucusunda saklandıklarından dolayı hızlı çalışırlar, bir kez derlendikten sonra diğer SQL cümleciklerinin aksine tekrar derlenmeye ihtiyaç duymazlar.

Uygulama

Entity Framework (Varlık Altyapısı) ile "Stored Procedures" üzerinden  banka hesapları ekleyen ve silen bir uygulama yazılmıştır. Bunun için önce Microsoft SQL Server Management Studio 2008’de Kisi ve Hesap adında iki tablo oluşturulmuş ve bu tablolardaki verileri kullanan bir "Stored Procedure" yazılmıştır.

Kisi ve Hesap tablolarının oluşturulmasında kullanılan sorgular şu şekildedir:

create table Kisi
(
            id uniqueidentifier default newid(),
            ad nvarchar(50) not null,
            soyad nvarchar(50) not null,

            primary key(id)
)

create table Hesap
(
            id uniqueidentifier default newid(),
            kisiId uniqueidentifier not null,
            miktar money not null default 0,

            primary key(id),
            foreign key(kisiId) references Kisi(id)

)

Tablolara ait ER (Entity-Relationship - Varlık-İlişki) diyagramı aşağıdaki gibidir. 

     

Yazılım tarafında kullanılmak üzere Kisi ve Hesap tabloları üzerinden kişi ekleyen ve silen yordamlar şu şekilde yazılmıştır:
 
create procedure KisiEkle
(

            @ad nvarchar(50),
            @soyad nvarchar(50),
            @miktar money
)

as
declare @kisiId uniqueidentifier;
set @kisiId = NEWID();
insert into Kisi (id, ad, soyad) values (@kisiId, @ad, @soyad);
insert into Hesap (kisiId, miktar) values (@kisiId, @miktar);
return

create procedure KisiSil
(
           @kisiId uniqueidentifier
)

as
delete from Hesap where kisiId = @kisiId;
delete from Kisi where id = @kisiId;
return

Yazılan "Stored Procedure"e göre KisiEkle yordamı ad, soyad ve miktar parametreleri alarak eklenen kişi adına bir hesap açmaktadır. KisiSil yordamı ise, kisiId’ye göre hesap tablosundan silme işlemini gerçekleştirdikten sonra Kisi tablosundan silme işlemini gerçekleştirmektedir.
  1. Uygulama için öncelikle Microsoft Visual Studio'da yeni bir proje açılarak projeye Entity Data Model (Varlık Veri Modeli) eklenir.



  2. Bir sonraki adımda oluşturulan tablolar ve saklı yordamlar da Entity Data Model'e eklenir. Kisi ve Hesap tablosunun yanı sıra KisiEkle ve KisiSil Stored Procedure'leri seçilerek modele gerekli öğeleri ekleme işlemleri tamamlanır.



  3. Bundan sonra "Stored Procedure" çağırılması işlemi için Model Browser (Model Tarayıcısı) içerisinde bulunan Entity Container (Varlık Taşıyıcısı) altındakiFunction Imports (Fonksiyon Aktarma) klasörüne sağ tıklanarak Add Function Import (Aktarım Fonksiyonunu Ekle) seçeneği seçilir.



  4. Sonraki adımda "Stored Procedure"ün yazılım tarafında kullanılacak olan fonksiyon ismi belirtilir.

KisiEkleSP() ve KisiSilSP() fonksiyonlarını kullanabilmek için Entity Data Model’den bir nesne yaratılmalıdır. Daha sonra nesne üzerinden KisiEkleSP ve KisiSilSP metotları çağırılır.

arslanzEntities banka = new arslanzEntities();

banka.KisiEkleSP(string ad, string soyad, decimal miktar);
banka.KisiSilSP(Guid kisiId);