1. Dapperとは何か
Dapper は .NET マイクロORM(Micro ORM)で、Micro ORMの王様と呼ばれ、ネイティブの ADO.NET に近いパフォーマンスを発揮します。
ORM:オブジェクトリレーショナルマッパー。データベーステーブル ↔ C#エンティティオブジェクトの自動マッピングを実現します。
主な特徴:
- SQLを内部でカプセル化せず、開発者がSQLを記述します;
- 拡張メソッドにより
IDbConnectionを拡張(すべてのDB接続オブジェクトから直接利用可能); - 軽量で非常に高いパフォーマンス。
補足:厳密にはマイクロORMに分類され、EF Core のようなフルORMフレームワークとは異なります。コミュニティでは「純粋なORMなのか」という議論が続いています。
SQLインジェクション対策:パラメータ化クエリでインジェクションを回避可能。SQL文字列連結にはリスクが残ります。
実行の3ステップ:データベース接続を作成 → SQL文を記述 → Dapper拡張メソッドを呼び出し、SQLとパラメータを渡して実行。
特徴
- 高パフォーマンス、高速なクエリ実行
- 静的エンティティ、動的オブジェクトのマッピングに対応
- SQL文を自由に制御可能
- 複数結果セットのクエリに対応
- ストアドプロシージャをネイティブサポート
IDbConnectionインターフェースを利用、各種DBドライバーと互換性あり- 一括挿入に対応(拡張機能。標準は簡易一括、大量データには Dapper.Plus 推奨)
インストール
方法1:NuGetパッケージマネージャーコンソール(PMC)
Install-Package Dapper
方法2:.NET CLI(.NET Core/.NET5+推奨)
dotnet add package Dapper
方法3:Visual Studio GUI
ソリューションエクスプローラー → プロジェクト右クリック → NuGetパッケージの管理、Dapperを検索しインストール。
重要注意:Dapper本体にはデータベースドライバーは含まれません!
SQL Server利用時は別途Microsoft.Data.SqlClient、MySQLの場合はMySqlConnectorをインストールしてください。
サンプルコード
using Dapper;
using Microsoft.Data.SqlClient;
// 1. IDbConnection を作成
string connStr = "接続文字列を記述";
using var conn = new SqlConnection(connStr);
// 2. SQLを記述
string sql = "SELECT * FROM Article WHERE Id = @Id";
// 3. クエリ実行、エンティティへ自動マッピング
var article = conn.QueryFirstOrDefault<Article>(sql, new { Id = 1 });
public class Article
{
public int Id { get; set; }
public string Title { get; set; }
}Code language: JavaScript (javascript)
比較
| フレームワーク | 種別 | SQL制御 | 利用シーン |
|---|---|---|---|
| Dapper | Micro ORM | 手動でSQL記述 | 高パフォーマンスが必要、複雑クエリ、既存プロジェクトのリファクタリング |
| EF Core | Full ORM | SQL自動生成、ネイティブSQLも利用可 | 高速開発、単純な業務、SQLを手書きしたくない場合 |
紹介とインストール
Next: 最初のサンプル