Altbilgi içeriğine atla
Iron Academy Logo
C# Uygulaması
C# Uygulaması

Diğer Kategoriler

C# SQL Bağlantı Eğitimi: Dapper + SQL Server Veritabanı Açıklandı

[[academy-video-youtube({"vid": "WGbTM198-eA", "start_time": "0", "title": "C# Uygulaması Baştan Sona Ders 10 - SQL Bağlantısı", "creator": "Tim Corey", "length": "1h 15m 23s"})]]

Tim Corey'nin "C# Uygulaması Baştan Sona" serisinde 10. derste, bir C# uygulamasını SQL Server veritabanına Dapper kullanarak nasıl bağlayacağını açıklıyor. Önceki derste, uygulama sadece SQL ile konuşuyormuş gibi yapan sahte bir veri erişim katmanı kullanıyordu. Bu videoda, Tim bu yer tutucu kodu gerçek SQL bağlantısı mantığıyla değiştiriyor ve temiz, ölçeklenebilir ve kolay bakım yapılabilir bir veritabanı bağlantısını nasıl kurduğunu gösteriyor.

Bu makale, Tim'in kapsadığı anahtar kavramları bölüyor ve bunları C# SQL bağlantı veya SQL Server'a yeniyseniz bile mantıklı bir şekilde açıklıyor.

Proje Kurulumu ve Temizliği

Tim, çözüm yapısını gözden geçirerek ve önceki derste yapılan değişiklikleri doğrulayarak başlıyor. Program.cs'de, hem SQL Server hem de metin dosyası veritabanlarına bağlanmak için kod eklediğini ve başlangıç formunu "Ödül Yarat" formuna değiştirdiğini açıklar, böylece veritabanı bağlantısını hemen test edebilir.

Daha sonra proje yapısını iki klasör oluşturarak temizliyor:

  • Modeller

  • Veri Erişimi

Bu, kaynak kod işlevselliğini etkilememekle birlikte, organizasyona yardımcı olduğunu belirtiyor. Bir projeye sonra döndüğünüzde, temiz yapı ve tutarlı adlandırma bakımını ve genişletilmesini çok daha kolay hale getirir.

Neden Dapper?

Tim, SQL bağlantıları için ORM (Nesne-İlişkisel Dönüştürücü) olarak Dapper kullanacağını açıklıyor. Dapper, ham SQL komutları ile Entity Framework gibi üst seviye ORM'ler arasında yer alır.

Tim, Dapper'ı tercih ediyor çünkü:

  • Ham ADO.NET kadar hızlı

  • Entity Framework'ten daha basit

  • Gereksiz karmaşıklığı ve ağır şablon kodunu önler

Entity Framework'ün, özellikle küçük uygulamalarda daha yavaş ve daha ağır olabileceğini belirtir. Projesi için Dapper, performans ve sadelik arasında doğru dengeyi sağlar.

Dapper'ın Kurulumu

Tim, Visual Studio'daki NuGet Paket Yöneticisi üzerinden Dapper kurulumunu gösterir. Kurulumdan sonra, Dapper proje referanslarında görünür ve SQL bağlantı kodu temiz ve okunabilir hale gelir.

Bağlantı Dizgesi Ekleme

Dapper kullanmak için bir bağlantı dizesine ihtiyacınız var. Tim, bunu kütüphane projesine değil, UI projesinin app.config dosyasına ekler, çünkü kütüphane bir DLL'dir ve kendi yapılandırması yoktur.

Bağlantı dizesi şunları içerir:

  • Veri Kaynağı (sunucu adı veya makine alan adı)

  • İlk Katalog (veritabanı adı)

  • Entegre Güvenlik (Windows Kimlik Doğrulaması)

  • Bağlantı Zaman Aşımı

  • Kullanıcı Kimliği ve Şifre (Windows Kimlik Doğrulaması kullanılmıyorsa)

Tim'in örneğinde, güvenilir bağlantı kullanır, yani Windows kimlik doğrulaması:

Data Source=SQL2016;Initial Catalog=Tournaments;Integrated Security=True;

Bu, SQL Server kullanıcı kimlik bilgilerinin dosyada saklanmasını önlediğini vurgular.

GlobalConfig: Bağlantı Dizgesi Alma

Bağlantı dizgesini almak için Tim, GlobalConfig içine bir yöntem ekler:

public static string GetConnectionString(string name)
{
    return ConfigurationManager.ConnectionStrings[name].ConnectionString;
}

Bu yöntem, bağlantı dizgesini yapılandırma dosyasından çeker ve döndürür. Tim ayrıca gerekli System.Configuration referansını ekler.

SQL Bağlantısı Oluşturma

Tim, yer tutucu kodu çıkartır ve bir SqlConnection oluşturur:

using (IDbConnection bağlantı = new SqlConnection(
    GlobalConfig.GetConnectionString("tournaments")))
{
    // SQL mantığı buraya
}

Farklı veritabanı türlerini (SQL veya metin dosyası) çekirdek kodunu değiştirmeden değiştirebilmesi için bir IDbConnection arayüzü kullanır.

using bloğu önemlidir çünkü kod bloğundan çıktığında bağlantının otomatik olarak kapanmasını sağlar. Bu, bağlantı havuzunu tüketen veya veritabanı sunucusunda hatalara neden olabilecek açık bağlantıları önler.

Saklı Prosedür Oluşturma

Tim, C# içinde ham SQL yazmak yerine saklı bir prosedür kullanır. Bu, SQL mantığını veritabanında tutar ve SQL enjeksiyonu gibi riskleri azaltır.

Adı verilen bir saklı prosedür oluşturur:

dbo.SP_Prizes_Insert

Bu prosedür, ödül tablosuna uygun parametreler alır:

  • @KonumNumarası

  • @KonumAdı

  • @ÖdülMiktarı

  • @ÖdülYüzdesi

  • @ID (çıktı)

Çıktı parametresi, yeni oluşturulan ID'yi şu şekilde döndürür:

SELECT @ID = SCOPE_IDENTITY()

Bu, yeni kaydın ID'sinin C# uygulamasına döndürüleceğini garanti eder.

Dapper'da Dinamik Parametreler

C#'a geri döndüğümüzde, Tim, saklı prosedüre parametreler göndermek için Dapper'ın DynamicParameters'ini kullanır:

var p = new DynamicParameters();
p.Add("@KonumNumarası", model.KonumNumarası);
p.Add("@KonumAdı", model.KonumAdı);
p.Add("@ÖdülMiktarı", model.ÖdülMiktarı);
p.Add("@ÖdülYüzdesi", model.ÖdülYüzdesi);
p.Add("@ID", 0, dbType: DbType.Int32, direction: ParameterDirection.Output);

ID Çıktı olarak işaretlenmiştir ve Dapper, parametre eşleştirmesini yönetir.

Saklı Prosedürü Çalıştırma

Saklı prosedürü çalıştırır:

connection.Execute("dbo.SP_Prizes_Insert", p, commandType: CommandType.StoredProcedure);

Execute, bir Ekle işlemi gerçekleştirdiği ve bir SELECT ifadesi gibi satır döndürmediği için kullanılır.

Çalıştırıldıktan sonra, kod ID'yi alır:

model.ID = p.Get<int>("@ID");
return model;

Test ve Sonuçlar

Tim, uygulamayı çalıştırır, formu doldurur ve Ödül Oluştur'a tıklar. Veri, SQL Server veritabanına başarıyla eklenir. Her ikisini de test eder:

  • Ödül Miktarı

  • Ödül Yüzdesi

Her ikisi de çalışır, veritabanı bağlantısının ve saklı prosedürün doğru bir şekilde çalıştığını kanıtlar.

Tasarım Sorunu: Birden Çok Veri Bağlayıcı (1:01:50)

Tim, bir tasarım sorununu vurgular: SQL ve metin dosyası bağlayıcılarını aynı anda kullanmak, tutarsız ID'lere neden olur.

Bu yüzden sadece bir bağlayıcının aynı anda çalışmasını sağlamak için tasarımı değiştirir. Bir enum ekler:

VeritabanıTürü
{
SQL,
    MetinDosyası
}

Bu, uygulamanın her zaman tutarlı bir veritabanı türü kullanmasını sağlar ve farklı kaynaklardan gelen veritabanı verilerinin karışmasını önler.

Sonuç

Tim Corey'nin Ders 10, C# uygulamasını Dapper kullanarak SQL Server'a bağlamanın gerçek dünya yaklaşımını gösterir. Ele alınan konular:

  • Bağlantı dizgesi ekleme

  • SqlConnection kullanma

  • Bağlantıları güvenli bir şekilde açma ve kapama

  • Saklı prosedürler kullanma

  • SQL enjeksiyonunu önleme

  • Çoklu veri kaynakları için uygun mimari

C# ile bir SQL Server veritabanına temiz, hızlı ve sürdürülebilir bir şekilde bağlanmanın bir yolunu istiyorsanız, bu ders mükemmel bir rehberdir.

Hero Worlddot related to C# SQL Bağlantı Eğitimi: Dapper + SQL Server Veritabanı Açıklandı
Hero Affiliate related to C# SQL Bağlantı Eğitimi: Dapper + SQL Server Veritabanı Açıklandı

Sevdiğiniz Şeyleri Paylaşarak Daha Fazla Kazanın

.NET, C#, Java, Python veya Node.js ile çalışan geliştiriciler için içerik oluşturuyor musunuz? Uzmanlığınızı ek gelire dönüştürün!

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara