Merhaba, klasik .Net Framework'ünde store procedure leri Ado.Net Entity Data Model üzerinden çağırırken .Net Core'da ise bu yapıyı kullanamamaktayız. Bundan dolayı Dapper kütüphanesini kullanarak basic bir şekilde SP'lerin projemizde nasıl kullanabileceğinden bahsedeceğim...
İlk olarak ürünlerimizi parametre vererek çekebileceğimiz basit bir SP yazalım;
Create Procedure GetProductsByCategoryId
@CategoryId int as begin
Select * from Products where CategoryId=@CategoryId
end
Bu SP'yi kullanabilmek için .Net Core API projesine bir Dapper kütüphanesi ekleyelim. Bu kütüphaneyi ekledikten sonra controllarımızın içine girip şu şekilde bir kodlama gerçekleştirelim;
public async Task<IActionResult> GetProductsByCategoryId(int categoryId)
{
using IDbConnection context = new SqlConnection(_configuration.GetConnectionString("ConnectionStriniziGiriniz"));
var storeProc = "[dbo].[GetProductsByCategoryId]";
var result = await Task.FromResult(context.Query<ProductDetails>(storeProc, new { categoryId= categoryId}, commandType: CommandType.StoredProcedure).ToList());
if (result.Count > 0)
{
return Ok(result);
}
return BadRequest();
}
Yukarıdaki yapıyı açıklayacak olursam IDbConnection kısmında database ile olan connection bağlantısınızı yapmanız gerekmektir. Tanımladığımız storeProc değişkenindeki isim databasedeki SP adınız ile aynı olmak zorundadır.Result değişkeni kısmında ise bir ProductDetail Dto'su tanımlayarak SP'nizden çekeceğiniz kolon isimlerini girmeniz gerekmektedir. Parametre isminiz ise yine SP ile tanımladığınız parametre adı ile aynı olmak zorundadır. Bu işlemleri yaptıktan sonra SP'lerinizi başarılı bir şekilde getirebilmektesiniz. Takıldığınız kısımda yorum kısmından yardımcı olabilirim. Kolay gelsin...