LINQ to SQL Stored Procedure Kullanımı

Merhaba Arkadaşlar,Bu makalemde sizlere Linq Üstünde Stored Procedure kullanımı Anlatacağım.

Öncellikle Linq da Bir DataContext Oluşturulduğunu ve oluşturulan bu contextin içine veritabanımızdaki tablolarımızın süreklenip bırakıldığını söylemiştim(Bkn Linq Giriş-1 Makalesine).

1-)Öncelikle DataContextimizi oluşturuyoruz.Daha Sonra Veritabanında oluşturduğumuz Stored Proceduremüzü sürükleyip contextimizin içine bıraktığımız zaman (aşağıdaki şekilde altı kırmızı ile çizili) stored proceduremüz bir DataFunction olarak sistemimize eklenecektir.

Örnek olarak SQL Server da SP_KisiEkle isimli bir stored procedure oluşturulalım.Ve oluşturduğumuz bu procedurü contextimizin içine sürükleyelim.

Create PROCEDURE [dbo].[SP_KisiEkle]

(

@Ad nvarchar(50),

@Soyad nvarchar(50),

@Cinsiyet bit,

@DogumTarih nvarchar(11)

)

AS

Begin

Insert Into Kisi(Ad,Soyad,Cinsiyet,DogumTarih) VALUES (@Ad,@Soyad,@Cinsiyet,@DogumTarih)

End

2-)Daha Sonra Formumuzda bir Kişi Ekleme Buttonunun Click Eventine aşağıdaki kodu yazalım.Nasıl bir contextte ctx.TabloAdı diyip işlem yapabiliyorsak benzer şekilde burada ctx.StoredProcedureAdı verip işlem yapabiliyoruz.

DataClassesDataContext ctx = new DataClassesDataContext();

ctx.SP_KisiEkle(txtAd.Text,txtSoyad.Text,Convert.ToBoolean(txtCinsiyet.Text), txtDogumTarih.Text);

ctx.SubmitChanges();

3-) 2 nolu şıkta kullandığımız örnekteki stored procedure içine sadece in parametrelerini alıyordu.Peki biz output parametresinide kullanmak istersek,örnek olarak biz yaşı girdiğimiz zaman çıkış olarak bize o yaşın altındaki kişilerin maaş toplamlarını getiren bir procedure oluşturalım ve bunu da contextimize sürükleyelim.

Create PROCEDURE [dbo].[SP_YasaGoreMaasToplam]

(

@Yas int,

@Toplam money OUTPUT

)

AS

Select @Toplam=Sum(Maas) From CalisanDetay where Yas<@Yas

return @Toplam

Proceduremüzü oluşturduktan sonra kod tarafında ise bir butonun click eventine aşağıdaki kodumuzu yazalım burada dikkat edilmesi gereken hususlar output parametresini stored procedure yazarken ref anahtar kelimesini kullandık.

Ayrıca decimal? para=0; şeklinde soru işareti ile tanımlama yaptık.Buradaki soru işaretinin anlamı biz onu veritabanında boş olabilecek şekilde tanımlamış olduğumuzu belirtmektedir.Yani veritabanında nullable kolonlar için soru işaretli tanımlama yapmamız gerekmektedir.

protected void btnHesapla_Click(object sender, EventArgs e)

{

int? yas=Convert.ToInt32(txtYas.Text);

decimal? para=0;

DataClassesDataContext ctx = new DataClassesDataContext();

lblTotal.Text=  ctx.SP_YasaGoreMaasToplam(yas,ref para).ToString();

}

4-)Son olarak da eğer Stored Procedurümüzden bir liste dönecekse,Örnek olarak procedurümüz ile KisiTablomuzdaki tüm kayıtları çekelim.

Create PROCEDURE SP_KisileriGetir

AS

BEGIN

Select * From Kisi

END

Kod Tarafında ise Stored proceduremüzden gelen kayıtları bir listboxa yazdıralım.(Kayıtların sadece isim kısımlarını aldım).

protected void btnKisiGoster_Click(object sender, EventArgs e)

{

DataClassesDataContext ctx = new DataClassesDataContext();

List<SP_KisileriGetirResult> k =ctx.SP_KisileriGetir().ToList();

foreach (var i in k)

{

lstKisiler.Items.Add(i.Ad.ToString());

}

}

Bu yazı .NET kategorisine gönderilmiş. Kalıcı bağlantıyı yer imlerinize ekleyin.

LINQ to SQL Stored Procedure Kullanımı için 5 cevap

  1. Ahmet Refik ÖZBEK der ki:

    Teşekkürler.. sade ve anlaşılır olmuş..

  2. RAED ERDİNÇ KADDOURA der ki:

    Teşekkürler, sade ve anlaşılır…

  3. Şakir SÖĞÜT der ki:

    Çok yararlı bir makale teşekkür ederim.
    Bu konu hakkında bir de türkçe görsel eğitim sitesi buldum isteyenler buradan da fayudalanabilir. http://www.yazilimhocasi.com/linq-sql/121-8-linq-sql-ile-stored-procedure-kullanimi.html

  4. Sinan Arslan der ki:

    Tesekkür ederim anlatım için

  5. mahmut balaban der ki:

    Çok teşekkürler. Oldukça faydalı ve sade bir yazı olmuş.

mahmut balaban için bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>