Giriş Paneli

Kullanıcı Adı : 
Şifre : 
 
Şifremi Unuttum   Yeni Üye
Çıkmış Soru ve Ders Notu Arama:

Yorum Göndermek İçin Üye Olmanız Veya Giriş Yapmanız Gerekmektedir !

   Linq Üzerinde Stored Prosedür Kullanımı Bu yazıyı diğer sitelerde paylaş




Yazar : Erhan Tarih : 2/25/2009 Kategorisi : .NET
Okunma Sayisi : 707 Puan : 102 Puanla : 
Ekli Dosya :  Ekli Dosyayı indirebilmek için Üye olmanız gerekmektedir !    

Kaynak: Bilgehan YILDIZ

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 makale Hakkında Yorum Bulunmamaktadır İlk Yorumu Siz Yapın ! :)
Yorum Eklemek İçin Üye Olmanız Gerekir !