Bu makalemizde LINQ ile SQL Server veritabanımızda bulunan Stored Procedure çalıştırmayı inceleyelim.
Öncelikle Project -> Add New Item ‘dan Linq to SQL Classes ekleyelim. İsmi de SPDataClasses.dbml olsun.
Eğer daha önce kullandığımız bir DataClasses varsa onu kullanmaya devam edebiliriz.
linq-to-sql-stored-procedure-1

linq-to-sql-stored-procedure-1

Server Explorer’dan veritabanı bağlantısını kuruyoruz. Elimde bulunan kutuphane isimli veritabanına bağlanıyorum. Bu veritabanında oluşturduğumStored Procedure ile uygulamamızı geliştireceğiz.
linq-to-sql-stored-procedure-2

linq-to-sql-stored-procedure-2

Üstteki resimde de görüldüğü gibi, Stored Procedure’ün adı AdiniAl ve bir adet string türünde adi isminde parametresi bulunmaktadır.
AdiniAl Stored Procedure’un kodlarını 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 kayıtlardan gönderdiğimiz parametre değişkeninin değerinin içinde olanlarının adi bilgisini vermektedir.
Şimdi Formumuza gelelim ve kodumuzu yazalım. 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(“”) şeklinde SPDataClassesDataContext’imizin bir methodu gibi kullanmaktayız.
SPDataClassesDataContext.Designer.cs dosyasını incelediğimizde bu class içerisindeki kodlarla veritabanı bağlantısı oluşturulmakta ve bu bağlantı ile kutuphane veritabanı içerisinde bulunan AdiniAl fonksiyonunun burada C# koduna dönüştürülmüş gibi gösterildiği görünmektedir.
NOT: Aşağıdaki kodlar sadece arka plandaki çalışmanın anlaşılabilmesi açısından gösterilmiştir.
[Function(Name=”dbo.AdiniAl”)]
AdiniAl fonksiyonunun sonucu için oluşturulan sınıf da aşağıdadır. Uygulamamızda  kitap.adi diyerek çağırdığımız property de bu sınıfta yer almaktadır.
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 çalıştırdığımızda aşağıdaki ekran çıktısını almaktayız.
linq-to-sql-stored-procedure-3

linq-to-sql-stored-procedure-3