IRONSOFTWAREHOME

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

C# Uygulaması Baştan Sona Ders 10 - SQL Bağlantısı

Tim Corey

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;
Text

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;
}
Text

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
}
Text

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
Text

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()
Text

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);
Text

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);
Text

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;
Text

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ı
}
Text

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.

Earn More by Sharing What You Love

Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Let's Stay in Touch!

Join our newsletter, you’ll get exclusive access on article updates. We value your privacy

Key in blue circle

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez