logo


Welcome Guest! To enable all features please Giriş or Kayıt.

Bildirim

Icon
Error

Ayarlar
Son mesaja git Go to first unread
bilgehanyildiz  
#1 Gönderildi : 26 Şubat 2015 Perşembe 10:07:49(UTC)
bilgehanyildiz

Sıralama: Member

Gruplar: Registered
Katılan: 25.02.2015(UTC)
Mesajlar: 12
Turkey
Konum: İstanbul

2 Mesajına Toplam 2 Kere Teşekkür Edildi.
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.


UserPostedImage

Ö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.

Kod:

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.

Kod:

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.


Kod:

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.

Kod:

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.

Kod:

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).

Kod:

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());
       }
    }

Düzenle Moderatör Tarafından 26 Şubat 2015 Perşembe 10:30:56(UTC)  | Sebep: Sebep Bildirilmesi



Bu konudaki kullanıcılar
Guest
Forumu Atla  
Bu foruma yeni konular postalayamazsınız.
Bu forumda ki konulara yeni posta gönderemezsiniz.
Bu forumdaki postalarınızı silemezsiniz.
Bu forumdaki postalarınızı düzenleyemezsiniz.
Bu forumda anketler yaratamazsınız.
Bu forumdaki anketlere oy veremezsiniz.