Dapper - Execute Methods

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ı
  • Stored Procedure
  • Insert
  • Update
  • Delete
Execute metodunda kullanılan parametreler

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