Dapper C# (Geliştiriciler için Nasıl Çalışır)
Modern yazılım geliştirmede, veritabanlarına verimli bir şekilde erişmek uygulama performansı ve ölçeklenebilirliği için hayati öneme sahiptir. Dapper, .NET için hafif bir Nesne-İlişkisel Haritalayıcı (ORM), veritabanı etkileşimi için basit bir yaklaşım sunar. Bu makalede, SQLite veritabanı dosyası ile Dapper C# kullanmayı keşfedeceğiz ve kod örnekleriyle basitliğini ve etkinliğini göstereceğiz. Ayrıca, Iron Softwareın IronPDF adlı olağanüstü PDF oluşturma kütüphanesini tanıtacağım.
Dapper Nedir?
Dapper, .NET platformu için bir nesne-ilişkisel haritalama (ORM) çerçevesidir. Nesneye yönelik bir alan modelini geleneksel bir ilişkisel veri tabanına haritalamayı sağlayan basit bir nesne haritalayıcıdır. Dapper hızı ve performansı ile bilinir, genellikle 'Mikro ORM'nin Kralı' olarak anılır. Dapper, bir raw ADO.NET veri okuyucusunun hızına eşleşir ve IDbConnection arayüzünü SQL veritabanlarına sorgu yapmak için yararlı genişletme yöntemleri ile geliştirir.
Dapper'ın Kilit Özellikleri
- Performans: Dapper, hafif tasarımı ve verimli nesne haritalama nedeniyle mükemmel performansıyla tanınır.
- Basitlik: Dapper'ın API'si minimalist ve sezgiseldir, bu da onu geliştiricilerin öğrenmesi ve etkili bir şekilde kullanması için kolay hale getirir.
- Ham SQL Desteği: Dapper, geliştiricilerin ham SQL sorguları yazmasına izin verir, veri tabanı etkileşimleri üzerinde tam kontrol sağlar.
- Nesne Haritalama: Dapper, sorgu sonuçlarını doğrudan C# nesnelerine mapler, boilerplate kodunu azaltır ve kod okunabilirliğini artırır.
- Parametreli Sorgular: Dapper, SQL enjeksiyonu saldırılarına karşı koruma sağlarken ve performansı artırırken, parametreli sorguları destekler.
- Çoklu Mapping: Dapper birden fazla sorgunun verimli bir şekilde yürütülmesine izin vererek bire çok ve çoke çok ilişkileri sorunsuz bir şekilde işler, bu sayede karmaşık veri alımını basitleştirir.
Dapper ile Asenkron Veri Erişimi
Dapper, asenkron uzantı yöntemleri sunar ve geliştiricilerin veri tabanı sorgularını asenkron olarak çalıştırmasına olanak tanır. Bu asenkron yöntemler, veri tabanı sorguları gibi I/O tabanlı işlemler için idealdir; ana iş parçacığı veri tabanı işleminin tamamlanmasını beklerken başka görevleri yürütmeye devam edebilir.
Dapper'daki Anahtar Asenkron Yöntemler
QueryAsync: SQL sorgusunu eşzamanlı olarak yürütür ve sonucu dinamik nesneler veya güçlü türde nesneler dizisi olarak döndürür.QueryFirstOrDefaultAsync: SQL sorgusunu eşzamanlı olarak yürütür ve ilk sonucu veya sonuç bulunamazsa varsayılan bir değeri döndürür.ExecuteAsync: SQL komutunu eşzamanlı olarak yürütür (örneğin, INSERT, UPDATE, DELETE) ve etkilenen satır sayısını döndürür.
Ortamı Kurma: Kod örneklerine geçmeden önce, gerekli araçları yüklediğinizden emin olun:
- Visual Studio veya Visual Studio Code.
- .NET SDK.
- .NET için SQLite paketi.
SQLite paketini yüklemek için proje dizininizde şu komutu çalıştırın:
dotnet add package Microsoft.Data.Sqlite
dotnet add package Microsoft.Data.Sqlite
Bir SQLite Veritabanı Oluşturma: Gösterim amaçlı olmak üzere, 'example.db' adında basit bir SQLite veritabanı dosyası oluşturalım ve 'Id,' 'Name,' ve 'Email' sütunları içeren bir 'Users' tablosu oluşturalım.
CREATE TABLE Users (
Id INTEGER PRIMARY KEY,
Name TEXT,
Email TEXT
);
Dapper ile SQLite Kullanımı
- Öncelikle, gerekli ad alanlarının içeri aktarıldığından emin olun:
using Microsoft.Data.Sqlite;
using Dapper;
using Microsoft.Data.Sqlite;
using Dapper;
Imports Microsoft.Data.Sqlite
Imports Dapper
-
SQLite veri tabanına bir bağlantı kurun:
string connectionString = "Data Source=example.db"; // SQLite database connection string using (var connection = new SqliteConnection(connectionString)) { connection.Open(); // Your Dapper queries will go here }string connectionString = "Data Source=example.db"; // SQLite database connection string using (var connection = new SqliteConnection(connectionString)) { connection.Open(); // Your Dapper queries will go here }Dim connectionString As String = "Data Source=example.db" ' SQLite database connection string Using connection = New SqliteConnection(connectionString) connection.Open() ' Your Dapper queries will go here End Using$vbLabelText $csharpLabel -
Dapper ile bir sorgu çalıştırın:
// Define a class to represent the structure of a user public class User { public int Id { get; set; } public string Name { get; set; } public string Email { get; set; } } // Query to select all users string query = "SELECT * FROM Users"; // SQL query var users = connection.Query<User>(query).ToList(); // Display the results foreach (var user in users) { Console.WriteLine($"Id: {user.Id}, Name: {user.Name}, Email: {user.Email}"); }// Define a class to represent the structure of a user public class User { public int Id { get; set; } public string Name { get; set; } public string Email { get; set; } } // Query to select all users string query = "SELECT * FROM Users"; // SQL query var users = connection.Query<User>(query).ToList(); // Display the results foreach (var user in users) { Console.WriteLine($"Id: {user.Id}, Name: {user.Name}, Email: {user.Email}"); }' Define a class to represent the structure of a user Public Class User Public Property Id() As Integer Public Property Name() As String Public Property Email() As String End Class ' Query to select all users Private query As String = "SELECT * FROM Users" ' SQL query Private users = connection.Query(Of User)(query).ToList() ' Display the results For Each user In users Console.WriteLine($"Id: {user.Id}, Name: {user.Name}, Email: {user.Email}") Next user$vbLabelText $csharpLabel -
Dapper kullanarak veri tabanına veri ekleyin:
// Define a new user var newUser = new User { Name = "John Doe", Email = "john@example.com" }; // SQL query/stored procedure to insert a new user string insertQuery = "INSERT INTO Users (Name, Email) VALUES (@Name, @Email)"; // Execute the query connection.Execute(insertQuery, newUser);// Define a new user var newUser = new User { Name = "John Doe", Email = "john@example.com" }; // SQL query/stored procedure to insert a new user string insertQuery = "INSERT INTO Users (Name, Email) VALUES (@Name, @Email)"; // Execute the query connection.Execute(insertQuery, newUser);' Define a new user Dim newUser = New User With { .Name = "John Doe", .Email = "john@example.com" } ' SQL query/stored procedure to insert a new user Dim insertQuery As String = "INSERT INTO Users (Name, Email) VALUES (@Name, @Email)" ' Execute the query connection.Execute(insertQuery, newUser)$vbLabelText $csharpLabel
IronPDF Tanıtımı
IronPDF, geliştiricilerin .NET uygulamaları içinde PDF belgeleri programatik olarak oluşturmasına, düzenlemesine ve üzerinde işlem yapmasına olanak tanıyan Iron Software tarafından sağlanan bir C# kütüphanesidir. HTML, resimler ve diğer formatlardan PDF belgeleri oluşturma, varolan PDF dosyalarına metin, resimler ve çeşitli elemanlar ekleme gibi özellikler sunar. IronPDF, .NET geliştiricileri için PDF oluşturma ve manipülasyon görevlerini basitleştirmeyi hedefler ve kapsamlı bir araç ve API seti sağlar.
IronPDF, .NET uygulamaları içinde PDF oluşturma ve manipülasyonu için bir dizi özellik sunar:
- HTML'den PDF'ye Dönüşüm: CSS stillerini içeren HTML içeriğini PDF belgelerine dönüştürün.
- Resimden PDF'ye Dönüşüm: JPEG, PNG, BMP gibi resimleri PDF belgelerine dönüştürün.
- Metinden PDF'ye Dönüşüm: Düz veya biçimlendirilmiş metni (RTF) PDF belgelerine dönüştürün.
- PDF Oluşturma: Programatik olarak sıfırdan PDF belgeleri oluşturun.
- PDF Düzenleme: Mevcut PDF belgelerine metin, resim ve diğer elemanlar ekleyerek düzenleyin veya değiştirin.
- PDF Birleştirme ve Bölme: Birden fazla PDF belgelerini tek bir belgede birleştirin veya bir PDF belgesini birden fazla dosyaya bölün.
- PDF Güvenliği: PDF belgelerine parola koruması ve şifreleme uygulayarak erişimi sınırlayın ve hassas bilgileri koruyun.
- PDF Form Doldurma: PDF formlarını programatik olarak verilerle doldurun.
- PDF Baskı: .NET uygulamanızdan doğrudan PDF belgeleri yazdırın.
- PDF Dönüşüm Ayarları: PDF oluşturma sırasında sayfa boyutu, yönlendirme, kenar boşlukları, sıkıştırma gibi çeşitli ayarları özelleştirin.
- PDF Metin Çıkarma: PDF belgelerinden metin içeriğini çıkararak daha fazla işlem veya analiz için kullanın.
- PDF Meta Verileri: PDF belgeleri için yazar, başlık, konu, anahtar kelimeler gibi meta verileri ayarlayın.
Dapper ve IronPDF ile PDF Belgeleri Oluşturma
Visual Studio'da bir konsol uygulaması oluşturun

Proje adını ve konumunu sağlayın

.NET sürümünü seçin

Aşağıdaki paketleri Visual Studio Paket Yöneticisi veya konsoldan yükleyin
dotnet add package Microsoft.Data.Sqlite
dotnet add package Microsoft.Data.Sqlite

dotnet add package Dapper --version 2.1.35
dotnet add package Dapper --version 2.1.35

dotnet add package IronPdf --version 2024.4.2
dotnet add package IronPdf --version 2024.4.2

Bir PDF belgesi oluşturmak için aşağıdaki kodu kullanın:
using Dapper; // Import Dapper for ORM functionalities
using IronPdf; // Import IronPDF for PDF generation
using Microsoft.Data.Sqlite; // Import Sqlite for database connection
// Define the connection string for SQLite database
string connectionString = "Data Source=ironPdf.db";
// Create a string to hold the content for the PDF document
var content = "<h1>Demonstrate IronPDF with Dapper</h1>";
// Add HTML content
content += "<h2>Create a new database using Microsoft.Data.Sqlite</h2>";
content += "<p>new SqliteConnection(connectionString) and connection.Open()</p>";
// Open the database connection
using (var connection = new SqliteConnection(connectionString))
{
connection.Open();
// Create a Users Table using Dapper
content += "<h2>Create a Users Table using Dapper and SQL insert query</h2>";
content += "<p>CREATE TABLE IF NOT EXISTS Users</p>";
// SQL statement to create a Users table
string sql = "CREATE TABLE IF NOT EXISTS Users (\n Id INTEGER PRIMARY KEY,\n Name TEXT,\n Email TEXT\n);";
connection.Execute(sql);
// Add Users to table using Dapper
content += "<h2>Add Users to table using Dapper</h2>";
content += AddUser(connection, new User { Name = "John Doe", Email = "john@example.com" });
content += AddUser(connection, new User { Name = "Smith William", Email = "Smith@example.com" });
content += AddUser(connection, new User { Name = "Rock Bill", Email = "Rock@example.com" });
content += AddUser(connection, new User { Name = "Jack Sparrow", Email = "Jack@example.com" });
content += AddUser(connection, new User { Name = "Tomus Tibe", Email = "Tomus@example.com" });
// Retrieve and display users from database
content += "<h2>Get Users From table using Dapper</h2>";
string query = "SELECT * FROM Users";
var users = connection.Query<User>(query).ToList();
// Display each user detail retrieved from the database
foreach (var user in users)
{
content += $"<p>Id:{user.Id}, Name:{user.Name}, email: {user.Email}</p>";
Console.WriteLine($"{user.Id}. User Name:{user.Name}, Email:{user.Email}");
}
// Create PDF from the accumulated HTML content
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(content);
// Save the PDF to a file
pdf.SaveAs("dapper.pdf");
}
// Method to add user to the database and accumulate HTML content
string AddUser(SqliteConnection sqliteConnection, User user)
{
string insertQuery = "INSERT INTO Users (Name, Email) VALUES (@Name, @Email)";
sqliteConnection.Execute(insertQuery, user);
return $"<p>Name:{user.Name}, email: {user.Email}</p>";
}
using Dapper; // Import Dapper for ORM functionalities
using IronPdf; // Import IronPDF for PDF generation
using Microsoft.Data.Sqlite; // Import Sqlite for database connection
// Define the connection string for SQLite database
string connectionString = "Data Source=ironPdf.db";
// Create a string to hold the content for the PDF document
var content = "<h1>Demonstrate IronPDF with Dapper</h1>";
// Add HTML content
content += "<h2>Create a new database using Microsoft.Data.Sqlite</h2>";
content += "<p>new SqliteConnection(connectionString) and connection.Open()</p>";
// Open the database connection
using (var connection = new SqliteConnection(connectionString))
{
connection.Open();
// Create a Users Table using Dapper
content += "<h2>Create a Users Table using Dapper and SQL insert query</h2>";
content += "<p>CREATE TABLE IF NOT EXISTS Users</p>";
// SQL statement to create a Users table
string sql = "CREATE TABLE IF NOT EXISTS Users (\n Id INTEGER PRIMARY KEY,\n Name TEXT,\n Email TEXT\n);";
connection.Execute(sql);
// Add Users to table using Dapper
content += "<h2>Add Users to table using Dapper</h2>";
content += AddUser(connection, new User { Name = "John Doe", Email = "john@example.com" });
content += AddUser(connection, new User { Name = "Smith William", Email = "Smith@example.com" });
content += AddUser(connection, new User { Name = "Rock Bill", Email = "Rock@example.com" });
content += AddUser(connection, new User { Name = "Jack Sparrow", Email = "Jack@example.com" });
content += AddUser(connection, new User { Name = "Tomus Tibe", Email = "Tomus@example.com" });
// Retrieve and display users from database
content += "<h2>Get Users From table using Dapper</h2>";
string query = "SELECT * FROM Users";
var users = connection.Query<User>(query).ToList();
// Display each user detail retrieved from the database
foreach (var user in users)
{
content += $"<p>Id:{user.Id}, Name:{user.Name}, email: {user.Email}</p>";
Console.WriteLine($"{user.Id}. User Name:{user.Name}, Email:{user.Email}");
}
// Create PDF from the accumulated HTML content
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(content);
// Save the PDF to a file
pdf.SaveAs("dapper.pdf");
}
// Method to add user to the database and accumulate HTML content
string AddUser(SqliteConnection sqliteConnection, User user)
{
string insertQuery = "INSERT INTO Users (Name, Email) VALUES (@Name, @Email)";
sqliteConnection.Execute(insertQuery, user);
return $"<p>Name:{user.Name}, email: {user.Email}</p>";
}
Imports Microsoft.VisualBasic
Imports Dapper ' Import Dapper for ORM functionalities
Imports IronPdf ' Import IronPDF for PDF generation
Imports Microsoft.Data.Sqlite ' Import Sqlite for database connection
' Define the connection string for SQLite database
Private connectionString As String = "Data Source=ironPdf.db"
' Create a string to hold the content for the PDF document
Private content = "<h1>Demonstrate IronPDF with Dapper</h1>"
' Add HTML content
Private content &= "<h2>Create a new database using Microsoft.Data.Sqlite</h2>"
Private content &= "<p>new SqliteConnection(connectionString) and connection.Open()</p>"
' Open the database connection
Using connection = New SqliteConnection(connectionString)
connection.Open()
' Create a Users Table using Dapper
content &= "<h2>Create a Users Table using Dapper and SQL insert query</h2>"
content &= "<p>CREATE TABLE IF NOT EXISTS Users</p>"
' SQL statement to create a Users table
Dim sql As String = "CREATE TABLE IF NOT EXISTS Users (" & vbLf & " Id INTEGER PRIMARY KEY," & vbLf & " Name TEXT," & vbLf & " Email TEXT" & vbLf & ");"
connection.Execute(sql)
' Add Users to table using Dapper
content &= "<h2>Add Users to table using Dapper</h2>"
content += AddUser(connection, New User With {
.Name = "John Doe",
.Email = "john@example.com"
})
content += AddUser(connection, New User With {
.Name = "Smith William",
.Email = "Smith@example.com"
})
content += AddUser(connection, New User With {
.Name = "Rock Bill",
.Email = "Rock@example.com"
})
content += AddUser(connection, New User With {
.Name = "Jack Sparrow",
.Email = "Jack@example.com"
})
content += AddUser(connection, New User With {
.Name = "Tomus Tibe",
.Email = "Tomus@example.com"
})
' Retrieve and display users from database
content &= "<h2>Get Users From table using Dapper</h2>"
Dim query As String = "SELECT * FROM Users"
Dim users = connection.Query(Of User)(query).ToList()
' Display each user detail retrieved from the database
For Each user In users
content += $"<p>Id:{user.Id}, Name:{user.Name}, email: {user.Email}</p>"
Console.WriteLine($"{user.Id}. User Name:{user.Name}, Email:{user.Email}")
Next user
' Create PDF from the accumulated HTML content
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(content)
' Save the PDF to a file
pdf.SaveAs("dapper.pdf")
End Using
' Method to add user to the database and accumulate HTML content
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'string AddUser(SqliteConnection sqliteConnection, User user)
'{
' string insertQuery = "INSERT INTO Users (Name, Email) VALUES (@Name, @Email)";
' sqliteConnection.Execute(insertQuery, user);
' Return string.Format("<p>Name:{0}, email: {1}</p>", user.Name, user.Email);
'}
Kod Açıklaması
- PDF oluşturma için bir dize içerik tutucu ile başlayın.
- Yeni bir veritabanı oluşturun,
Microsoft.Data.Sqlitekullanarak,connection.Open()boş bir veritabanı oluşturur. - Dapper kullanarak bir
UsersTablosu oluşturun ve ekleme için SQL sorgularını yürütün. - Eklemek için Dapper ile kullanıcıları tabloya ekleyin.
- Veri tabanından tüm kullanıcıları seçmek için sorgu yapın.
- IronPDF tarafından sağlanan
ChromePdfRendererveSaveAsyöntemlerini kullanarak oluşturulan içeriği PDF olarak kaydedin.
Çıktı

Lisans (IronPDF için Deneme Mevcuttur)
IronPDF'in lisanslama bilgileri projenizde uyumluluk ve kullanım sağlamak için mevcuttur.
Bir deneme lisansı, IronPDF deneme lisans sayfası aracılığıyla alınabilir.
Lütfen aşağıda gösterilen appSettings.json dosyasındaki Anahtarı değiştirin:
{
"IronPdf.License.LicenseKey" : "The Key Goes Here"
}
Sonuç
Dapper, .NET uygulamalarında veri erişimini basitleştirir ve SQLite ile birleştirildiğinde veri tabanlarını yönetmek için hafif ve etkili bir çözüm sunar. Bu makalede açıklanan adımları takip ederek, SQLite veri tabanlarıyla sorunsuz bir şekilde etkileşim kurmak için Dapper'i kullanabilir, bu sayede sağlam ve ölçeklenebilir uygulamaları kolaylıkla oluşturabilirsiniz. İronPDF ile birlikte, geliştiriciler Dapper gibi ORM veritabanları ve IronPDF gibi PDF oluşturma kütüphaneleri ile ilgili beceriler kazanabilir.
Sıkça Sorulan Sorular
C#'ta Dapper nedir?
Dapper, .NET platformu için hızlı ve performanslı bir ORM framework'üdür. Geliştiricilere nesne yönelimli bir alan modelini geleneksel bir ilişkisel veritabanına eşleme sağlar.
Dapper veritabanı işlemlerindeki performansı nasıl artırır?
Dapper, hafif yapısıyla ve nesneleri verimli bir şekilde eşleyerek performansı artırır. Ham ADO.NET veri okuyucu hızına ulaşır ve SQL veritabanı sorguları için IDbConnection arayüzünü yararlı genişletme yöntemleriyle geliştirilir.
Dapper ile asenkron veri erişimi nasıl gerçekleştirilir?
Dapper, asenkron olarak database sorguları yapmak için QueryAsync, QueryFirstOrDefaultAsync ve ExecuteAsync gibi genişletme metotları sunar, bu da I/O bağlı işlemler için idealdir.
Bir .NET uygulamasına PDF oluşturmayı nasıl entegre edebilirim?
IronPDF kullanarak bir .NET uygulamasına PDF oluşturmayı entegre edebilirsiniz. HTML, resim ve metinleri PDF'ye dönüştürmek ve mevcut PDF'leri düzenlemek dahil olmak üzere, PDF belgelerinin programlanabilir bir şekilde oluşturulmasına, düzenlenmesine ve işlenmesine izin verir.
Dapper ile SQLite kullanımı için ortamı nasıl kurarım?
Ortamı kurmak için Visual Studio veya Visual Studio Code, .NET SDK ve SQLite paketi gereklidir. Bu paketleri dotnet CLI kullanarak yükleyebilirsiniz.
Veritabanı sorgu sonuçlarıyla bir PDF raporu nasıl üretebilirim?
Dapper ile verileri önce alıp sonra IronPDF'in fonksiyonlarını kullanarak çıktıyı PDF olarak formatlayarak veritabanı sorgu sonuçlarından bir PDF raporu oluşturun.
C#'ta Dapper kullanarak nasıl SQLite veritabanı oluşturabilir ve sorgulayabilirim?
SqliteConnection ile bağlantı kurarak ve Dapper'ın Execute yöntemini kullanarak SQL sorgularını çalıştırarak bir SQLite veritabanı oluşturun. Veritabanını verileri etkin bir şekilde almak için Dapper'ın Query metodunu kullanarak sorgulayabilirsiniz.
Dapper karmaşık veri ilişkilerini ele alabilir mi?
Evet, Dapper çoklu eşleme yeteneklerini kullanarak birden çok çoklu ilişkiyi yönetebilir, bu da karmaşık veri alma işlemlerini basitleştirmektedir.
.NET'te bir PDF oluşturma kütüphanesi kullanmanın yararları nelerdir?
IronPDF gibi bir PDF oluşturma kütüphanesi, .NET uygulamalarını sorunsuz PDF oluşturma ve düzenleme özellikleri sunarak zenginleştirir, HTML'den PDF'ye dönüşüm, PDF düzenleme, birleştirme, ayırma ve güvenlik özellikleri gibi özellikler sunar.
IronPDF için deneme lisansını nasıl alabilirim?
Deneme lisansı IronPDF deneme lisansı sayfasından alınabilir. Lisans anahtarı proje konfigürasyonunuza eklenmelidir.




