Store Procedure(Saklı Yordam), yazılım platformundan parametre alabilen ve yaptığı işlemler sonucunda yazılım platformuna geri değer döndürebilen veya döndürmeyen, Veritabanı tarafında çalışan kayıtlı nesnelerdir. Entity Framework aslında kendi doğasında CRUD işlemlerini yapabilen bir yapıdır. Fakat belirli noktalarda veritabanında çalışacak sorguların daha hızlı ve performanslı olması kriteri devreye girdiği zaman veritabanı ile ilgili işlemleri Store Procedure'ler ile yapma ihtiyacı duyulacaktır. İşte bende bu yazımda o ihtiyaç anında Store Procedure'leri Entity Framework içerisinde nasıl kullanabileceğimizi anlatmaya çalışacağım. Entity Framework içerisinde strored procedure'leri iki türlü kullanım şekli mevcuttur: 1-) Bir Entity nesnesinizin Create, Delete ya da Update olayına ilgili Store Procedure'u tanımlayarak. 2-) Modelinize yüklediğiniz bir Store Procedure'ü istediğiniz her an kullanabilmeniz için Function Imports klasörüne tanımlayarak. Şimdi gelelim bu 2 kullanım şeklini uygulayarak yapacağımız basit bir senaryo oluşturmaya. Örneğimizde belirli kategorileri saklayan bir tablo üzerinde işlemler yapmayı amaçlıyoruz. Category adlı bir tablo barındıran bir veritabanımız olsun. Bu tabloya yeni kayıtlar eklemek için veritabanı tarafında oluşturulan stored procedure'leri uygulamamızda nasıl kullanacağımızı görelim.
Önce veritabanında Category tablomuzu aşağıdaki gibi oluşturalım.
Veritabanı tarafındaki işlemlerimizi tamamladıktan sonra artık Visual Studio ortamımıza geri dönme vakti geldi. Projenize daha önceden bir Entity Data Model eklediğinizi varsayıyorum. O halde veritabanından Entity Data modelimize yeni eklediğimiz Category tablosunu ve Store Procedure'ünü ekleyelim. Model Browser'ınızın içinde sağ tıklayın ve Update Model From Database seçeneğini seçerek devam edelim. Bu adımda Add sekmesinde yer alan Tables ve Store Procedures yazılarının yanındaki kutuları işaretleyelim. Malum veritabanında henüz DataModel'de yer almayan bir tablo ve bir stored procedure'müz var. Dolayısıyla karşımıza şöyle bir ekran gelecektir. İlgili kutuları işaretledikten sonra Finish butonuna basalım. Pencere kapandıktan sonra sağ taraftaki Model Browser'ımızın son hali aşağıdaki gibi değişecektir. Entity Model'imize öğelerimizi başarıyla ekledikten sonra asıl yapmak istediğimiz konuyu hatırlayalım; Category tablosuna yeni kayıt ekleneceği zaman Entity Model'imizden SQL'e bir sorgu cümlesi değil de bir Store Procedure aracılığı ile yeni kayıt eklenmesini sağlamak. Yazının başında da bahsettiğim gibi bunu 2 şekilde yapabiliyoruz.
1. Entity nesnesinizin Create, Delete yada Update olayına ilgili Store Procedure'u tanımlamak Category Entity'mize ilgili store procedure'ü insert function olarak tanımlama işlemini yapmak için, Category Entity nesnemize sağ tıklayın, çıkan pencereden Stored Procedure Mapping seçeneğini tıklayın.