Bu yazımda Dapper ORM'ine ait Execute metodunun kullanımını örneklerle anlatacağım.
Execute metodu bir veya birden fazla çalışacak sorgular için kullanılır. Bu metodun geri dönüş tipi integer olup, etkilenen satır sayısını döndürür.
Temel kullanım alanları
Bu metodun kullanımını örneklerle anlatalım. Northwind veri tabanını kullandığım örneklerde öncelikle veri tabanımıza karşılık gelen modelleri oluşturduk.
Veri tabanımızdaki Categories ve Products tablolarına karşılık gelen Kategori ve Urunler sınıfları aşağıdaki gibidir. Bu sınıfları kullanarak CRUD işlemlerini yapabileceğiz.
Bağlantımızı oluşturduğumuz DbConnect class'ımız
AppConfig veya web.config'de Connection String'imizi tanımladık
Stored Procedure
Stored Procedure sorgularını kullanabilmemiz için bu metoda commandType parametresini eklememiz gerekmektedir.
Kullanım: commandType:CommandType.StoredProcedure
connection değişkenimizde veritabanı bağlantı cümlesi yer almaktadır. Ona bağlı olarak metodumuzu çağırabiliyoruz.
query değişkenine ilgili stored procedure'nin adını tanımladık ve sql parametresine bu procedure'yi tanımladık.
Parametre olarak Kategori tipinden bir nesne alan SPAddOneCategory metodu Category tablosuna kategori eklememizi sağlar.
new ile başlayan parametremiz, param adındaki parametremiz olup sql sorgumuzun parametre içerdiğini gösterir. Category tablosundaki alan adlarını kullanarak verimizi ekleriz.
Insert
Parametre olarak Kategori tipinden bir nesne alan AddOneCategory metodu Insert sorgusuyla kategori ekleme işlemi yapar.
sql parametresine insert sorgumuzu yazıyoruz. @ işareti ile parametremizi oluşturuyoruz. Sorgudaki parametre adını new operatörü içerisinde tanımlıyoruz.
Update
Parametre olarak Kategori tipinden bir nesne ve güncelleme işlemi yapılacak id değerini alan UpdateCategory metodu Update sorgusuyla kategori güncelleme işlemi yapar.
sql parametresine update sorgumuzu yazıyoruz. @ işareti ile parametremizi oluşturuyoruz. Sorgudaki parametre adını new operatörü içerisinde tanımlıyoruz.
Delete
Parametre olarak silinecek kategorinin id değerini alan DeleteCategory metodu Delete sorgusuyla kategori silme işlemi yapar.
sql parametresine delete sorgumuzu yazıyoruz. @ işareti ile parametremizi oluşturuyoruz. Sorgudaki parametre adını new operatörü içerisinde tanımlıyoruz.
Execute metodu bir veya birden fazla çalışacak sorgular için kullanılır. Bu metodun geri dönüş tipi integer olup, etkilenen satır sayısını döndürür.
Temel kullanım alanları
- Stored Procedure
- Insert
- Update
- Delete
Adı | Tanım |
sql | Sql sorgumuzu yazacağımız alan |
param | Eğer sql sorgumuz parametre içerdiği durumlarda kullanılır.(varsayılan= null) |
transaction | Transaction varsa kullanılır.(varsayılan= null) |
commandTimeout | Command timeout'unu burada tanımlarız.(varsayılan= null) |
commandType | Sql sorgu türümüzü tanımlarız.Eğer Stored Procedure kullanacaksak bu parametreyi ekleriz.(varsayılan= null) |
Bu metodun kullanımını örneklerle anlatalım. Northwind veri tabanını kullandığım örneklerde öncelikle veri tabanımıza karşılık gelen modelleri oluşturduk.
Veri tabanımızdaki Categories ve Products tablolarına karşılık gelen Kategori ve Urunler sınıfları aşağıdaki gibidir. Bu sınıfları kullanarak CRUD işlemlerini yapabileceğiz.
public class Kategori { public string CategoryName { get; set; } public int CategoryId { get; set; } public string Description { get; set; } } public class Urunler { public int ProductId { get; set; } public string ProductName { get; set; } public int UnitsInStock { get; set; } public double UnitPrice { get; set; } public int CategoryId { get; set; } }
Bağlantımızı oluşturduğumuz DbConnect class'ımız
public class DbConnect { private DbConnect() { } private static SqlConnection _connection; public static SqlConnection Connection { get { if (_connection==null) { var connectionString = ConfigurationManager.ConnectionStrings["northWind"].ConnectionString; _connection = new SqlConnection(connectionString); } if (_connection.State!=ConnectionState.Open) { _connection.Open(); } return _connection; } }
AppConfig veya web.config'de Connection String'imizi tanımladık
<connectionStrings> <add name="northWind" connectionString="Server=ServerName;Database=NORTHWND;Trusted_Connection=True;"/> </connectionStrings>
Stored Procedure
Stored Procedure sorgularını kullanabilmemiz için bu metoda commandType parametresini eklememiz gerekmektedir.
Kullanım: commandType:CommandType.StoredProcedure
connection değişkenimizde veritabanı bağlantı cümlesi yer almaktadır. Ona bağlı olarak metodumuzu çağırabiliyoruz.
query değişkenine ilgili stored procedure'nin adını tanımladık ve sql parametresine bu procedure'yi tanımladık.
Parametre olarak Kategori tipinden bir nesne alan SPAddOneCategory metodu Category tablosuna kategori eklememizi sağlar.
new ile başlayan parametremiz, param adındaki parametremiz olup sql sorgumuzun parametre içerdiğini gösterir. Category tablosundaki alan adlarını kullanarak verimizi ekleriz.
public static int SPAddOneCategory(Kategori kategori) { var connection = DbConnect.Connection; var query = "AddCategory"; return connection.Execute(query, new { CategoryName = kategori.CategoryName, Description = kategori.Description },commandType:System.Data.CommandType.StoredProcedure); }
Insert
Parametre olarak Kategori tipinden bir nesne alan AddOneCategory metodu Insert sorgusuyla kategori ekleme işlemi yapar.
sql parametresine insert sorgumuzu yazıyoruz. @ işareti ile parametremizi oluşturuyoruz. Sorgudaki parametre adını new operatörü içerisinde tanımlıyoruz.
public static int AddOneCategory(Kategori kategori) { var connection = DbConnect.Connection; var query = "INSERT INTO [dbo].[Categories]([CategoryName],[Description]) VALUES (@CategoryName, @Description)"; return connection.Execute(query, new { CategoryName = kategori.CategoryName, Description = kategori.Description }); }
Update
Parametre olarak Kategori tipinden bir nesne ve güncelleme işlemi yapılacak id değerini alan UpdateCategory metodu Update sorgusuyla kategori güncelleme işlemi yapar.
sql parametresine update sorgumuzu yazıyoruz. @ işareti ile parametremizi oluşturuyoruz. Sorgudaki parametre adını new operatörü içerisinde tanımlıyoruz.
public static int UpdateCategory(Kategori kategori, int id) { var connection = DbConnect.Connection; var query = "UPDATE [dbo].[Categories] SET[CategoryName] =@CategoryName ,[Description] = @Description WHERE CategoryId=@CategoryId"; return connection.Execute(query, new { CategoryName = kategori.CategoryName, Description = kategori.Description, CategoryId = id }); }
Delete
Parametre olarak silinecek kategorinin id değerini alan DeleteCategory metodu Delete sorgusuyla kategori silme işlemi yapar.
sql parametresine delete sorgumuzu yazıyoruz. @ işareti ile parametremizi oluşturuyoruz. Sorgudaki parametre adını new operatörü içerisinde tanımlıyoruz.
public static int DeleteCategory(int id) { var connection = DbConnect.Connection; var query = "DELETE FROM [dbo].[Categories] WHERE CategoryId=@CategoryId"; return connection.Execute(query, new { CategoryId = id }); }
Yorumlar
Yorum Gönder