Dapper C# (Geliştiriciler için Nasıl Çalışır)
Modern yazılım geliştirmede, veritabanlarına verimli erişim, uygulama performansı ve ölçeklenebilirlik için çok önemlidir. Dapper, .NET için hafif bir Nesne-İlişkisel Haritalayıcı (ORM), veritabanı etkileşimi için basit bir yaklaşım sunar. Bu makalede, Dapper C#'ı SQLite veritabanı dosyası ile nasıl kullanacağınızı anlatacağız, kod örnekleriyle basitliğini ve etkinliğini göstereceğiz. Ayrıca, IronPDF adlı harika PDF oluşturma kütüphanesini tanıtacağım Iron Software tarafından.
Dapper nedir?
Dapper, .NET platformu için bir nesne-ilişkisel haritalama (ORM) çerçevesidir. Nesne yönelimli bir etki alanı modelini geleneksel ilişkisel bir veritabanına eşleştirmenizi sağlar. Dapper, hızı ve performansı ile bilinir, genellikle "Mikro ORM Kralı" olarak adlandırılır. Ham ADO.NET veri okuyucunun hızını yakalar ve IDbConnection arayüzünü SQL veritabanlarına sorgu yapma için yararlı genişletme yöntemleri ile geliştirir.
Dapper'in Temel Özellikleri
- Performans: Dapper, hafif tasarımı ve verimli nesne eşlemesi sayesinde mükemmel performansı ile tanınır.
- Basitlik: Dapper'ın API'si minimal ve sezgiseldir, bu da geliştiricilerin kolayca kavrayıp etkin bir şekilde kullanmalarına olanak tanır.
- Ham SQL Desteği: Dapper, geliştiricilere ham SQL sorguları yazma olanağı verir, böylece veritabanı etkileşimleri üzerinde tam kontrol sağlar.
- Nesne Eşleme: Dapper, sorgu sonuçlarını doğrudan C# nesnelerine eşler, gereksiz kodu azaltır ve kod okunabilirliğini artırır.
- Parametrik Sorgular: Dapper, parametrik sorguları destekler, SQL enjeksiyonu saldırılarına karşı korur ve performansı geliştirir.
- Çoklu Eşleme: Dapper, bir-çok ve çok-çok ilişkileri sorunsuz bir şekilde yönetir, böylece birden fazla sorgunun verimli bir şekilde yürütülmesini sağlar ve karmaşık veri alma süreçlerini basitleştirir.
Dapper ile Asenkron Veri Erişimi
Dapper, eşzamanlı karşılıklarının benzeri olan asenkron genişletme yöntemleri sunar ve geliştiricilerin veritabanı sorgularını asenkron olarak yürütmelerini sağlar. Bu asenkron yöntemler, veritabanı sorguları gibi G/Ç tabanlı işlemler için idealdir, çünkü ana thread veritabanı işleminin tamamlanmasını beklerken diğer görevleri yürütmeye devam edebilir.
Dapper'de Temel Asenkron Yöntemler
QueryAsync: Bir SQL sorgusunu eşzamansız olarak yürütür ve sonucu dinamik nesneler veya güçlü şekilde yazılmış nesneler dizisi olarak döndürür.QueryFirstOrDefaultAsync: Bir SQL sorgusunu eşzamansız olarak yürütür ve ilk sonucu veya sonuç bulunamazsa varsayılan bir değeri döndürür.ExecuteAsync: Bir SQL komutunu eşzamansız olarak yürütür (örneğin, INSERT, UPDATE, DELETE) ve etkilenen satır sayısını döndürür.
Ortamın Ayarlanması: Kod örneklerine dalmadan önce gerekli araçların yüklendiğinden emin olun:
- Visual Studio veya Visual Studio Code.
- .NET SDK.
- .NET için SQLite paketi.
SQLite paketini kurmak için proje dizininizde aşağıdaki komutu çalıştırın:
dotnet add package Microsoft.Data.Sqlite
dotnet add package Microsoft.Data.Sqlite
SQLite Veritabanı Oluşturma: Demonstrasyon amaçlı olarak, 'example.db' adlı basit bir SQLite veritabanı dosyası oluşturalım ve 'Id', 'Name' ve 'Email' sütunlarını içeren bir 'Users' tablosu oluşturalım.
CREATE TABLE Users (
Id INTEGER PRIMARY KEY,
Name TEXT,
Email TEXT
);
SQLite ile Dapper Kullanımı
- İlk olarak, gerekli ad alanlarının içe aktarıldığından emin olun:
using Microsoft.Data.Sqlite;
using Dapper;
using Microsoft.Data.Sqlite;
using Dapper;
Imports Microsoft.Data.Sqlite
Imports Dapper
-
SQLite veritabanı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 yürütü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 veritabanı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'i Tanıtma
IronPDF, geliştiricilerin .NET uygulamaları içinde programlı olarak PDF belgeleri oluşturmasına, düzenlemesine ve manipüle etmesine izin veren Iron Software tarafından sağlanan bir C# kütüphanesidir. HTML, resimler ve diğer formatlardan PDF belgeleri oluşturma, mevcut PDF dosyalarına metin, resim ve çeşitli öğeler ekleme gibi özellikler sunar. IronPDF, .NET geliştiricileri için PDF oluşturma ve manipülasyon görevlerini kolaylaştırmayı hedefler ve kapsamlı bir araçlar ve API'ler 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üştürme: CSS stilleri dahil olmak üzere HTML içeriğini PDF belgelerine dönüştürün.
- Resimden PDF'ye Dönüştürme: Resimleri (JPEG, PNG, BMP gibi) PDF belgelerine dönüştürün.
- Metinden PDF'ye Dönüştürme: Düz metni veya biçimli 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 belgelerini metin, resim ve diğer öğeleri ekleyerek veya değiştirerek düzenleyin.
- PDF Birleştirme ve Bölme: Birden fazla PDF belgesini tek bir belgeye birleştirin veya bir PDF belgesini birden çok dosyaya ayırın.
- PDF Güvenliği: Erişimi kısıtlamak ve hassas bilgileri korumak için PDF belgelerine parolayla koruma ve şifreleme uygulayın.
- PDF Form Doldurma: PDF formlarını programatik olarak verilerle doldurun.
- PDF Yazdırma: PDF belgelerini doğrudan .NET uygulamanızdan yazdırın.
- PDF Dönüşüm Ayarları: PDF oluşturma sırasında sayfa boyutu, yön, kenar boşlukları, sıkıştırma ve daha fazlasını özelleştirin.
- PDF Metin Çıkarma: PDF belgelerinden metin içeriği çıkararak daha fazla işleme veya analize olanak tanır.
- PDF Metadata: PDF belgeleri için metadata (yazar, başlık, konu, anahtar kelimeler) ayarlayın.
IronPDF ve Dapper ile PDF belgeleri oluşturmak
Visual Studio'da bir konsol uygulaması oluşturun

Proje ismini ve konumunu sağlayın

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

Visual Studio Paket Yöneticisi veya konsoldan aşağıdaki paketleri kurun
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

Aşağıdaki kodu kullanarak bir PDF belgesi oluşturun:
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 oluşturarak başlayın.
Microsoft.Data.Sqlitekullanarak yeni bir veritabanı oluşturun,connection.Open()boş bir veritabanı oluşturacaktır.- Dapper kullanarak bir
UsersTablosu oluşturun ve ekleme işlemleri için SQL sorguları yürütün. - Dapper ile ekleme sorguları kullanarak tabloya kullanıcılar ekleyin.
- Veritabanından tüm kullanıcıları seçmek için sorgu yapın.
- IronPDF tarafından sağlanan
ChromePdfRendererveSaveAsmetotlarını kullanarak üretilen içeriği bir PDF olarak kaydedin.
Çıktı

Lisans (IronPDF için Deneme Mevcuttur)
IronPDF'nin lisans bilgileri, uyum sağlamak ve proje içinde kullanımınızı garanti altına almak için temin edilmiştir.
Geliştiriciler için bir deneme lisansı IronPDF deneme lisansı sayfasından elde edilebilir.
Lütfen aşağıda gösterilen appSettings.json dosyasında Anahtarı değiştirin:
{
"IronPdf.License.LicenseKey" : "The Key Goes Here"
}
Sonuç
Dapper, .NET uygulamalarında veri erişimini basitleştirirken, SQLite ile birleştiğinde veritabanlarını yönetmek için hafif ve verimli bir çözüm sunar. Bu makalede ana hatlarıyla belirtilen adımları izleyerek, Dapper'ı SQLite veritabanlarıyla sorunsuz bir şekilde etkileşim kurmak için kullanabilir, güçlü ve ölçeklenebilir uygulamalar oluşturabilirsiniz. IronPDF'nin yanı sıra, geliştiriciler Dapper gibi ORM veritabanları ve IronPDF gibi PDF oluşturma kütüphaneleri ile ilgili beceriler edinebilirler.
Sıkça Sorulan Sorular
C#'da Dapper nedir?
Dapper, .NET platformu için hız ve performansı ile tanınan bir nesne-ilişkisel eşleme (ORM) çerçevesidir. Geliştiricilerin nesne yönelimli bir alan modelini geleneksel ilişkisel bir veritabanına haritalamalarını sağlar.
Dapper, veritabanı işlemlerinde performansı nasıl geliştirir?
Dapper, hafif bir yapıya sahip olması ve nesneleri verimli bir şekilde eşleştirerek performansı artırır. Ham ADO.NET veri okuyucusunun hızına erişir ve SQL veritabanları için sorgulama yaparken faydalı uzantı yöntemleri ile IDbConnection arayüzünü geliştirir.
Dapper ile asenkron veri erişimi nasıl gerçekleştirilir?
Dapper, QueryAsync, QueryFirstOrDefaultAsync ve ExecuteAsync gibi asenkron uzantı yöntemleri sunar, bu da geliştiricilere veritabanı sorgularını asenkron olarak yürütme imkanı tanır, I/O tabanlı işlemler için idealdir.
.NET uygulamasına PDF oluşturma nasıl entegre edilir?
.NET uygulamasına PDF oluşturmayı IronPDF kullanarak entegre edebilirsiniz. HTML, resimler ve metinleri PDF'ye dönüştürme dahil olmak üzere PDF belgelerini programatik olarak oluşturma, düzenleme ve yönetme imkanı tanır ve mevcut PDF'leri düzenleme işlevselliği sunar.
Dapper ile SQLite kullanımı için ortam nasıl kurulur?
Ortamı kurmak için Visual Studio veya Visual Studio Code, .NET SDK ve .NET için SQLite paketine ihtiyaçınız var. Bu paketleri dotnet CLI'yi kullanarak kurabilirsiniz.
Veritabanı sorgu sonuçlarından bir PDF raporu nasıl oluşturabilirim?
İlk olarak Dapper ile verileri alarak ve ardından çıktıyı IronPDF'nin işlevlerini kullanarak PDF olarak biçimlendirerek veritabanı sorgu sonuçlarından bir PDF raporu oluşturmak için IronPDF'yi kullanın.
C#'da Dapper kullanarak bir SQLite veritabanı nasıl oluşturulup sorgulanır?
Dapper'ın Execute yöntemini kullanarak SQL sorguları yürüterek ve SqliteConnection ile bağlantı kurarak bir SQLite veritabanı oluşturun. Veritabanını sorgulamak için Dapper'ın Query yöntemini kullanarak verileri verimli bir şekilde alın.
Dapper karmaşık veri ilişkilerini yönetebilir mi?
Evet, Dapper, karmaşık veri alımını basitleştiren çoklu eşleme yeteneklerini kullanarak birden fazla ve çoktan çoğa ilişkileri yönetebilir.
.NET'te bir PDF oluşturma kütüphanesi kullanmanın avantajları nelerdir?
IronPDF gibi bir PDF oluşturma kütüphanesi, HTML'yi PDF'ye dönüştürme, PDF'leri düzenleme, birleştirme, ayırma ve güvenlik özellikleri gibi özellikler sunarak .NET uygulamalarını geliştirmeyi sağlar.
IronPDF için bir deneme lisansı nasıl elde edilir?
IronPDF için bir deneme lisansını, IronPDF deneme lisans sayfasından alabilirsiniz. Lisans anahtarı, proje yapılandırmanıza dahil edilmelidir.




