Bu makalemizde LINQ ile SQL Server veritabanimizda bulunan Stored Procedure çalistirmayi inceleyelim.
Öncelikle Project -> Add New Item ‘dan Linq to SQL Classes ekleyelim. Ismi de SPDataClasses.dbml olsun.
Eger daha önce kullandigimiz bir DataClasses varsa onu kullanmaya devam edebiliriz.
Server Explorer’dan veritabani baglantisini kuruyoruz. Elimde bulunan kutuphane isimli veritabanina baglaniyorum. Bu veritabaninda olusturdugum Stored Procedure ile uygulamamizi gelistirecegiz.
Üstteki resimde de görüldügü gibi, Stored Procedure’ün adi AdiniAl ve bir adet string türünde adi isminde parametresi bulunmaktadir.
AdiniAl Stored Procedure’un kodlarini inceleyelim:
ALTER PROC AdiniAl @adi VARCHAR (50)
AS
SELECT adi FROM kitapbilgisi WHERE adi LIKE '%'+@adi+'%'
|
Bu prosedür, kitapbilgisi isimli tablonun adi sütunundaki kayitlardan gönderdigimiz parametre degiskeninin degerinin içinde olanlarinin adi bilgisini vermektedir.
Simdi Formumuza gelelim ve kodumuzu yazalim. Formumuza bir adet button ve bir adet listbox ekleyelim.
private void StoredProcedureCagir()
{
SPDataClassesDataContext dc = new SPDataClassesDataContext();
var kitaplar = dc.AdiniAl("server");
foreach (var kitap in kitaplar)
listBox1.Items.Add(kitap.adi);
}
|
var kitaplar = dc.AdiniAl("server") : SPDataClassesDataContext'te bulunan AdiniAl isimli Stored Procedure’ü, dc.AdiniAl("") seklinde SPDataClassesDataContext’imizin bir methodu gibi kullanmaktayiz.
SPDataClassesDataContext.Designer.cs dosyasini inceledigimizde bu class içerisindeki kodlarla veritabani baglantisi olusturulmakta ve bu baglanti ile kutuphane veritabani içerisinde bulunan AdiniAl fonksiyonunun burada C# koduna dönüstürülmüs gibi gösterildigi görünmektedir.
NOT: Asagidaki kodlar sadece arka plandaki çalismanin anlasilabilmesi açisindan gösterilmistir.
[Function(Name="dbo.AdiniAl")]
|
AdiniAl fonksiyonunun sonucu için olusturulan sinif da asagidadir. Uygulamamizda kitap.adi diyerek çagirdigimiz property de bu sinifta yer almaktadir.
public partial class AdiniAlResult
{
private string _adi;
public AdiniAlResult()
{
}
[Column(Storage="_adi", DbType="VarChar(255) NOT NULL", CanBeNull=false)]
public string adi
{
get
{
return this._adi;
}
set
{
if ((this._adi != value))
{
this._adi = value;
}
}
}
}
|
Projemizi çalistirdigimizda asagidaki ekran çiktisini almaktayiz.
Veysel Ugur KIZMAZ