.NET ヘルプ

Dapper C#(開発者向けの動作方法)

公開済み 2024年6月6日
共有:

イントロダクション

現代のソフトウェア開発において、効率的にデータベースにアクセスすることは、アプリケーションのパフォーマンスとスケーラビリティにとって非常に重要です。 Dapper軽量なオブジェクト・リレーショナル・マッパー(ORM (オブジェクト関係マッピング)) for .NETは、データベースとの相互作用において効率的なアプローチを提供します。 この記事では、SQLiteデータベースファイルでDapper C#を使用する方法を探り、コード例を通してそのシンプルさと有効性を実証します。 さらに、私は注目すべきPDF生成ライブラリ、IronPDFを紹介します。IronPDFからIron Software.

Dapperとは何ですか?

Dapperはオブジェクトリレーショナルマッピングです。(ORM (オブジェクト関係マッピング)).NETプラットフォームのフレームワーク。 それは、オブジェクト指向のドメインモデルを従来のリレーショナルデータベースにマッピングするためのシンプルなオブジェクトマッパーです。 Dapperは、その速度とパフォーマンスでよく知られており、「マイクロORMの王」とも呼ばれています。生のADO.NETデータリーダーと同等の速度を持ち、SQLデータベースをクエリするための便利な拡張メソッドでIDbConnectionインターフェースを強化します。

Dapperの主な機能

  1. パフォーマンス: Dapperは、その軽量な設計と効率的なオブジェクトマッピングのおかげで優れたパフォーマンスで知られています。

  2. シンプルさ: DapperのAPIはミニマリスト的で直感的なため、開発者が簡単に理解して効果的に使用することができます。

  3. Raw SQLのサポート: Dapperは開発者が生のSQLクエリを書くことを可能にし、データベースとのやり取りに対する完全な制御を提供します。

  4. オブジェクトマッピング:Dapperはクエリ結果を直接C#オブジェクトにマッピングし、ボイラープレートコードを削減し、コードの可読性を向上させます。

  5. パラメータ化クエリ: Dapperはパラメータ化クエリをサポートしており、SQLインジェクション攻撃から保護し、パフォーマンスを向上させます。

  6. マルチマッピング:Dapperは1対多および多対多の関係をシームレスに処理し、複数のクエリを効率的に実行することで、複雑なデータの取得を簡素化します。

Dapperを用いた非同期データアクセス

Dapperは、同期メソッドに対応する非同期拡張メソッドを提供しており、開発者がデータベースクエリを非同期で実行することができます。 これらの非同期メソッドは、データベースクエリのようなI/Oバウンドの操作に理想的です。この場合、メインスレッドはデータベース操作が完了するのを待つ間に他のタスクを続行することができます。

Dapperにおける主要な非同期メソッド

  1. QueryAsync:SQLクエリを非同期に実行し、動的オブジェクトまたは強く型付けられたオブジェクトのシーケンスとして結果を返します。

  2. QueryFirstOrDefaultAsync: SQLクエリを非同期で実行し、最初の結果を返すか、結果が見つからない場合はデフォルト値を返します。

    1. ExecuteAsync:SQLコマンドを非同期で実行します(挿入 (内容を以下の日本語に翻訳してください:

INSERT), 更新 (更新), 削除 (削除する))影響を受けた行数を返します。

環境をセットアップする: コード例に取り掛かる前に、必要なツールがインストールされていることを確認してください。

  1. Visual Studio または Visual Studio Code。

  2. .NET SDK(.NET ソフトウェア開発キット)

  3. .NET用SQLiteパッケージ。

    SQLiteパッケージをインストールするために、プロジェクトディレクトリで次のコマンドを実行してください:

dotnet add package Microsoft.Data.Sqlite

SQLiteデータベースの作成: デモンストレーションのために、"example.db"という名前のシンプルなSQLiteデータベースファイルを作成し、「Id」、「Name」、および「Email」の列を含む「Users」テーブルを用意しましょう。

CREATE TABLE Users (
    Id INTEGER PRIMARY KEY,
    Name TEXT,
    Email TEXT
);
CREATE TABLE Users (
    Id INTEGER PRIMARY KEY,
    Name TEXT,
    Email TEXT
);
CREATE TABLE Users(Id [INTEGER] PRIMARY KEY, Name TEXT, Email TEXT)
VB   C#

SQLiteでDapperを使用する

  1. 最初に、必要な名前空間がインポートされていることを確認してください:
using Microsoft.Data.Sqlite;
using Dapper;
using Microsoft.Data.Sqlite;
using Dapper;
Imports Microsoft.Data.Sqlite
Imports Dapper
VB   C#
  1. SQLiteデータベースへの接続を確立する:
    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
VB   C#
  1. Dapperでクエリを実行する:
    // 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 or default value
    string query = "SELECT * FROM Users"; // var sql queries
    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 or default value
    string query = "SELECT * FROM Users"; // var sql queries
    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}");
    }
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#
  1. Dapperを使用してデータベースにデータを挿入する:
    // Define a new user 
    var newUser = new User { Name = "John Doe", Email = "john@example.com" };
    // user generated 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" };
    // user generated 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);
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

IronPDFの紹介

IronPDFは、Iron SoftwareによるC#ライブラリです。Iron Software.NETアプリケーション内で、開発者がプログラム的にPDFドキュメントを作成、編集、操作できるようにします。 それはHTML、画像、およびその他の形式からPDFドキュメントを生成する機能や、既存のPDFファイルにテキスト、画像、およびさまざまな要素を追加する機能を提供します。 IronPDFは、包括的なツールとAPIを提供することによって、.NET開発者向けにPDF生成と操作タスクを簡素化することを目指しています。

IronPDFは、.NETアプリケーション内でPDFの生成および操作のための幅広い機能を提供します。

  1. HTMLからPDFへの変換: CSSスタイルを含むHTMLコンテンツをPDFドキュメントに変換します。

  2. 画像をPDFに変換: 画像を変換(JPEG、PNG、BMPなど)PDFドキュメントに。

  3. テキストをPDFに変換: プレーンテキストまたはフォーマット済みテキストを変換(RTF)PDFドキュメントに。

  4. PDF生成: プログラムでゼロからPDFドキュメントを作成します。

  5. PDF編集: 既存のPDFドキュメントにテキスト、画像、およびその他の要素を追加または変更して編集します。

  6. PDFの結合と分割:複数のPDFドキュメントを1つのドキュメントに結合する、またはPDFドキュメントを複数のファイルに分割する。

  7. PDFセキュリティ: アクセスを制限し、機密情報を保護するために、PDFドキュメントにパスワード保護と暗号化を適用します。

  8. PDF フォーム入力: プログラムによってPDFフォームにデータを入力します。

  9. PDF印刷:.NETアプリケーションから直接PDFドキュメントを印刷します。

  10. PDF変換設定: PDF生成中にページサイズ、向き、余白、圧縮などの各種設定をカスタマイズします。

  11. PDFテキスト抽出: PDFドキュメントからテキストコンテンツを抽出し、さらなる処理や分析を行います。

  12. PDFメタデータ: メタデータを設定(著者, タイトル, 件名, キーワード)PDFドキュメントのために。

IronPDFとDapperを使用してPDFドキュメントを生成

Visual Studioでコンソールアプリケーションを作成する

Dapper C#(開発者向けの動作方法):図1 - Visual Studioでコンソールアプリケーションを作成する

プロジェクト名と場所を提供してください

Dapper C#(開発者にとっての動作原理):図2 - プロジェクトの名前付け

.NETのバージョンを選択

Dapper C#(開発者向けの仕組み):図3 - 希望する .NET バージョンを選択

以下のパッケージをVisual Studioパッケージマネージャーまたはコンソールからインストールします

dotnet add package Microsoft.Data.Sqlite

Dapper C#(開発者向けの仕組み):図4 - Visual Studio パッケージ マネージャーから Microsoft Data Sqlite をインストールする

dotnet add package Dapper --version 2.1.35

Dapper C#(開発者のための仕組み): 図5 - Visual StudioパッケージマネージャーからDapperをインストールする

dotnet add package IronPdf --version 2024.4.2
dotnet add package IronPdf --version 2024.4.2
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'dotnet add package IronPdf --version 2024.4.2
VB   C#

Dapper C#(開発者向け動作方式): 図6 - Visual StudioパッケージマネージャーからIronPDFをインストール

以下のコードを使用してPDFドキュメントを生成します

using Dapper;
using IronPdf;
using Microsoft.Data.Sqlite;
string connectionString = "Data Source=ironPdf.db"; // sql server database connection string
var content = "<h1>Demonstrate IronPDF with Dapper</h1>";
content += "<h2>Create a new database using Microsoft.Data.Sqlite</h2>";
content += "<p>new SqliteConnection(connectionString) and connection.Open()</p>";
using (var connection = new SqliteConnection(connectionString))
{
    connection.Open();
    content += "<h2>Create a Users Table using dapper and insert sql query</h2>";
    content += "<p>CREATE TABLE IF NOT EXISTS Users</p>";
    // create table
    string sql = "CREATE TABLE IF NOT EXISTS Users (\n    Id INTEGER PRIMARY KEY,\n    Name TEXT,\n    Email TEXT\n);";
    connection.Execute(sql);
    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" });
    content += "<h2>Get Users From table using Dapper</h2>";
    // Query to select all users or default value
    string query = "SELECT * FROM Users"; // var sql queries
    var users = connection.Query<User>(query).ToList();
    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 Renderer
    var renderer = new ChromePdfRenderer();
    // Create a PDF from HTML string
    var pdf = renderer.RenderHtmlAsPdf(content);
    // Save to a file or Stream
    pdf.SaveAs("dapper.pdf");
}
string AddUser(SqliteConnection sqliteConnection, User user)
{
    // user generated SQL query/stored procedure to insert a new user
    string insertQuery = "INSERT INTO Users (Name, Email) VALUES (@Name, @Email)";
    // Execute the query
    sqliteConnection.Execute(insertQuery, user);
    return $"<p>Name:{user.Name}, email: {user.Email}</p>"; 
}
using Dapper;
using IronPdf;
using Microsoft.Data.Sqlite;
string connectionString = "Data Source=ironPdf.db"; // sql server database connection string
var content = "<h1>Demonstrate IronPDF with Dapper</h1>";
content += "<h2>Create a new database using Microsoft.Data.Sqlite</h2>";
content += "<p>new SqliteConnection(connectionString) and connection.Open()</p>";
using (var connection = new SqliteConnection(connectionString))
{
    connection.Open();
    content += "<h2>Create a Users Table using dapper and insert sql query</h2>";
    content += "<p>CREATE TABLE IF NOT EXISTS Users</p>";
    // create table
    string sql = "CREATE TABLE IF NOT EXISTS Users (\n    Id INTEGER PRIMARY KEY,\n    Name TEXT,\n    Email TEXT\n);";
    connection.Execute(sql);
    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" });
    content += "<h2>Get Users From table using Dapper</h2>";
    // Query to select all users or default value
    string query = "SELECT * FROM Users"; // var sql queries
    var users = connection.Query<User>(query).ToList();
    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 Renderer
    var renderer = new ChromePdfRenderer();
    // Create a PDF from HTML string
    var pdf = renderer.RenderHtmlAsPdf(content);
    // Save to a file or Stream
    pdf.SaveAs("dapper.pdf");
}
string AddUser(SqliteConnection sqliteConnection, User user)
{
    // user generated SQL query/stored procedure to insert a new user
    string insertQuery = "INSERT INTO Users (Name, Email) VALUES (@Name, @Email)";
    // Execute the query
    sqliteConnection.Execute(insertQuery, user);
    return $"<p>Name:{user.Name}, email: {user.Email}</p>"; 
}
Imports Microsoft.VisualBasic
Imports Dapper
Imports IronPdf
Imports Microsoft.Data.Sqlite
Private connectionString As String = "Data Source=ironPdf.db" ' sql server database connection string
Private content = "<h1>Demonstrate IronPDF with Dapper</h1>"
Private content &= "<h2>Create a new database using Microsoft.Data.Sqlite</h2>"
Private content &= "<p>new SqliteConnection(connectionString) and connection.Open()</p>"
Using connection = New SqliteConnection(connectionString)
	connection.Open()
	content &= "<h2>Create a Users Table using dapper and insert sql query</h2>"
	content &= "<p>CREATE TABLE IF NOT EXISTS Users</p>"
	' create 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)
	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"
	})
	content &= "<h2>Get Users From table using Dapper</h2>"
	' Query to select all users or default value
	Dim query As String = "SELECT * FROM Users" ' var sql queries
	Dim users = connection.Query(Of User)(query).ToList()
	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 Renderer
	Dim renderer = New ChromePdfRenderer()
	' Create a PDF from HTML string
	Dim pdf = renderer.RenderHtmlAsPdf(content)
	' Save to a file or Stream
	pdf.SaveAs("dapper.pdf")
End Using
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'string AddUser(SqliteConnection sqliteConnection, User user)
'{
'	' user generated SQL query/stored procedure to insert a new user
'	string insertQuery = "INSERT INTO Users (Name, Email) VALUES (@Name, @Email)";
'	' Execute the query
'	sqliteConnection.Execute(insertQuery, user);
'	Return string.Format("<p>Name:{0}, email: {1}</p>", user.Name, user.Email);
'}
VB   C#

コードの説明

  1. PDF生成のための文字列コンテンツホルダーを作成することから始めます。

  2. Microsoft.Data.Sqlite を使用して新しいデータベースを作成する場合、connection.Open()` は空のデータベースを作成します。

  3. Dapperを使用してユーザーテーブルを作成し、SQLクエリを挿入する

  4. Dapperを使用して挿入クエリでテーブルにユーザーを追加

  5. 全ユーザーを選択するクエリまたはデフォルト値

  6. ChromePdfRendererSaveAs メソッドを使用して生成されたコンテンツをPDFとして保存

出力

Dapper C#(開発者向けの使い方):図7 - 上記のすべてのパッケージをインストールして利用したPDF出力の例

ライセンス(IronPDFには試用版があります)

IronPDFのライセンス情報プロジェクト内でのコンプライアンスと使用を保証するために、この翻訳をご利用いただけます。

開発者向けのトライアルライセンスはIronPDFトライアルライセンスページ.

以下の appSettings.json ファイルの Key を置き換えてください。

{
  "IronPdf.License.LicenseKey" : "The Key Goes Here"
}
{
  "IronPdf.License.LicenseKey" : "The Key Goes Here"
}
If True Then
  "IronPdf.License.LicenseKey" : "The Key Goes Here"
End If
VB   C#

結論

Dapperは、.NETアプリケーションにおけるデータアクセスを簡素化し、SQLiteと組み合わせることで、軽量かつ効率的なデータベース管理ソリューションを提供します。 この記事で説明されている手順に従うことで、Dapperを使用してSQLiteデータベースとシームレスにやり取りし、堅牢でスケーラブルなアプリケーションを簡単に構築できます。 IronPDFとともに、開発者はDapperのようなORMデータベースやIronPDFのようなPDF生成ライブラリに関連するスキルを習得することができます。

< 以前
C#ペアクラス(開発者向けの仕組み)
次へ >
Nswag C#(開発者向けの動作方法)