この記事は .NET 10(C# 14)時点の情報でまとめています。各ライブラリは進化が速いので、最新の機能や書き方は公式ドキュメントもあわせて確認してください。
C#でデータベースを扱おうとすると、最初に迷うのが「結局どれを使えばいいの?」です。生の ADO.NET、Dapper、Entity Framework Core、SqlKata … 名前は聞くけれど違いがわからない、という人は多いはず。
この記事は、その4つの方法の違いと使い分けを、初心者向けに整理する地図(ハブ)です。それぞれの詳しい使い方は個別記事にリンクしているので、気になったところから読み進めてください。
目次
4つの選択肢を一枚で
まずは全体像です。左にいくほど「自分でSQLを書く(=制御が効く)」、右にいくほど「ライブラリに任せる(=楽できる)」と考えるとスッキリします。
比較表
| 方法 | SQLを書く? | 特徴 | 向いている場面 |
|---|---|---|---|
| 生 ADO.NET | 書く | 標準機能だけ。最も低レベルで手間がかかる | 依存を増やしたくない・仕組みを学びたい |
| Dapper | 書く | 軽量・高速。結果をオブジェクトに詰めてくれる | SQLを握りたい・パフォーマンス重視 |
| SqlKata | 組み立てる | SQLをC#コードで安全に組み立てる。Dapperと併用 | 条件で動的に変わるSQLを組みたい |
| EF Core | ほぼ書かない | フルORM。マイグレーション・変更追跡つき | 生産性重視・スキーマも任せたい |
「ADO.NET と Dapper はSQLを自分で書く」「EF Core はSQLを書かない」「SqlKata はその中間で、SQLの”組み立て”を助ける」——この3グループで覚えると迷いません。
選び方フロー
迷ったときは、次の順で考えると決めやすいです。
- とにかく楽にしたい/スキーマ管理も任せたい → EF Core
- SQLは自分で書きたい/速さがほしい → Dapper
- 条件でSQLが変わる/文字列連結を避けたい → SqlKata(+Dapper)
- 仕組みを学びたい/依存を増やしたくない → 生 ADO.NET
実務では「基本はEF Core、重い集計や高速な読み取りだけDapper」のように組み合わせて使うのもよくあるパターンです。
それぞれの詳しい使い方(個別記事)
この地図の各ルートは、それぞれ実践記事にまとめています。
- 前提・開発環境(Mac の人):Visual Studio for Mac 終了後の環境の作り方 → Mac で C#/.NET を開発する4つの方法
- Dapper:軽量ORMでSQLを実行し、結果をオブジェクトに詰める → Dapper入門|C#の軽量ORMの使い方
- EF Core:マイグレーションとLINQでSQLをほぼ書かない → EF Core入門|マイグレーションからCRUDまで
- SqlKata:SQLをC#コードで安全に組み立てる → SqlKata入門|C#で使えるSQLクエリビルダー
- SQLite(まず動かすDB):開発に最適な軽量DB → C#.Net SQLiteに接続する準備 / 暗号化DBに接続する
- 他のDBへ:本番はPostgreSQL/MySQLへ → C#からPostgreSQL・MySQLに接続する
まとめ
C#のデータベースアクセスは、「SQLをどこまで自分で握るか」で選ぶのが近道です。
- 楽をしたい → EF Core
- SQLを握りたい・速さ重視 → Dapper
- 動的にSQLを組みたい → SqlKata + Dapper
- 学習・最小依存 → 生 ADO.NET
まずは開発しやすい SQLite で手を動かし、慣れてきたら本番向けの PostgreSQL/MySQL へ、というステップがおすすめです。自分の目的に合う一本から始めてみてください。

コメント