Veritabanı işlemleri, herhangi bir uygulamanın temel yapı taşlarından biridir. .NET Core, güçlü bir platform olmasının yanı sıra, veritabanı işlemleri için çeşitli çözümler sunmaktadır. Bu çözümlerden biri de Dapper’dır. Bu yazıda, .NET Core ile Dapper kullanarak hızlı ve verimli veritabanı işlemleri yapmanın nasıl mümkün olduğunu keşfedeceğiz.
Dapper Nedir?
Dapper, .NET uygulamaları için bir mikro ORM (Object-Relational Mapping) kütüphanesidir. ORM araçları, veritabanı ile uygulama arasındaki veri iletişimini daha kolay ve güvenli bir hale getiren araçlardır. Dapper, Entity Framework gibi büyük ORM araçlarından daha hafif ve hızlıdır. Ancak, Entity Framework’ün sunduğu bazı ekstra özelliklerden yoksundur.
Dapper, SQL sorguları çalıştırmayı çok basit ve hızlı hale getirir. SQL yazmanıza olanak tanırken, aynı zamanda veri tabanı nesnelerini .NET sınıflarına kolayca dönüştürür. Bu, özellikle performans gereksinimleri yüksek projelerde önemli bir avantajdır.
Dapper’ın Özellikleri
- Hız: Dapper, SQL sorgularını hızlı bir şekilde çalıştırmak için tasarlanmıştır. Bu sayede büyük veritabanı sorguları çok daha hızlı sonuçlanır.
- Basitlik: Kullanımı son derece basittir. Dapper, yalnızca birkaç satır kodla veritabanı işlemleri yapmanıza olanak sağlar.
- Kolay Entegrasyon: Dapper, mevcut ADO.NET koduyla kolayca entegre edilebilir.
- Düşük Overhead: Dapper, daha büyük ORM'lerin aksine minimum bellek kullanımıyla çalışır.
.NET Core Projesinde Dapper Nasıl Kullanılır?
Dapper’ı .NET Core projenize entegre etmek oldukça basittir. Aşağıda adım adım bir rehber bulunmaktadır.
1. Dapper'ı Projeye Dahil Etmek
Öncelikle, Dapper kütüphanesini NuGet üzerinden projenize eklemeniz gerekir. Bunun için Visual Studio’da NuGet Package Manager’ı kullanabilirsiniz.
dotnet add package Dapper
2. Veritabanı Bağlantısı Kurmak
Dapper kullanmadan önce, veritabanına bir bağlantı kurmanız gerekir. Bu bağlantıyı genellikle SqlConnection
sınıfı ile yaparsınız. Aşağıda basit bir bağlantı örneği bulunmaktadır.
using System.Data.SqlClient;
using Dapper;
public class DatabaseService
{
private readonly string _connectionString = "YourConnectionString";
public SqlConnection GetConnection()
{
return new SqlConnection(_connectionString);
}
}
3. Veritabanı Sorgusu Yazmak
Dapper, SQL sorgularını çalıştırmak için oldukça basit bir API sunar. Aşağıda Dapper ile veri okuma ve yazma işlemi yapılabilecek örnekler bulunmaktadır.
Veri Okuma:
public async Task<IEnumerable<User>> GetUsersAsync()
{
using (var connection = GetConnection())
{
await connection.OpenAsync();
var users = await connection.QueryAsync<User>("SELECT * FROM Users");
return users;
}
}
Veri Yazma:
public async Task InsertUserAsync(User user)
{
using (var connection = GetConnection())
{
await connection.OpenAsync();
var query = "INSERT INTO Users (Name, Age) VALUES (@Name, @Age)";
await connection.ExecuteAsync(query, new { user.Name, user.Age });
}
}
Bu örnekte, QueryAsync
metodu ile veri okuma işlemi yapılıyor ve ExecuteAsync
metodu ile veri yazma işlemi gerçekleştiriliyor. Dapper, parametreleri doğrudan anonim bir nesne ile bağlayarak SQL enjeksiyon saldırılarına karşı güvenlik sağlar.
4. Veritabanı Bağlantılarını Yönetmek
Veritabanı bağlantılarını yönetmek çok önemlidir. Bağlantılar doğru şekilde açılmalı ve kapatılmalıdır. Dapper ile her sorgu için yeni bir bağlantı açmak iyi bir pratiktir. Ancak, daha büyük projelerde veritabanı bağlantı havuzlama kullanmak daha verimli olabilir.
5. Veri Nesnelerine Dönüştürme
Dapper, SQL sorgularının döndürdüğü sonuçları doğrudan .NET sınıflarına dönüştürmek için çok etkilidir. Örneğin, QueryAsync<User>
metodunda sorgu sonucu, User
sınıfına dönüştürülür.
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
Dapper, SQL sorgusundaki kolon adlarını, veri modelindeki özelliklerle eşleştirir. Eğer isimler uyumluysa, dönüşüm otomatik olarak yapılır.
Dapper'ın Performans Avantajları
Dapper, performans açısından özellikle büyük veri tabanı işlemleri için faydalıdır. Çünkü Dapper, Entity Framework gibi büyük ORM’lere göre daha düşük seviyede işlem yapar ve gereksiz overhead içermez. Bu, daha hızlı veri okuma ve yazma işlemleri anlamına gelir.
Örneğin, büyük bir tabloya veri eklerken Dapper, işlem süresini önemli ölçüde kısaltabilir. Aynı şekilde, çok büyük veri kümesi üzerinde sorgular çalıştırırken de Dapper, veritabanına daha az yük bindirir.
Sonuç
Dapper, .NET Core uygulamalarında hızlı ve verimli veritabanı işlemleri yapmak için mükemmel bir araçtır. Basitliği ve hızının yanı sıra, kullanım kolaylığı da dikkat çeker. Ancak, daha karmaşık projelerde ve ilişkili veri yapılarında Entity Framework gibi daha büyük ORM çözümleri tercih edilebilir. Yine de, düşük overhead ve yüksek performans gerektiren durumlarda Dapper vazgeçilmez bir araçtır.