C#のDBアクセスするやり方として、下記の3種類についてそれぞれの特徴などをまとめます。
- ADO.NET
- EntityFrameWork
- Dapper
下記は3つの視点から特徴をまとめた表です。
名称 | 自動マッピング | SQL自動生成 | パフォーマンス |
ADO.NET | × | × | 〇 |
EntityFrameWork | 〇 | 〇 | △ |
Dapper | 〇 | △ | 〇 |
以下、それぞれの特徴について説明していきます。
ADO.NET
ADO.NETはコード上にSQL文を記述します。SqlClientクラスを使ったやり方です。
パフォーマンスに優れていますが、記述しなければならないことが多くコードを書くのが非常に面倒です。
パフォーマンスに優れている
コード量が多くなり、生産性が低い
EntityFrameWork
EntityFrameWorkはコード上にSQL文を記述しません。記述したLINQがSQL文に変換されて実行されます。
マッピングも自動で行ってくれて、直感的にコードを書くことができて非常に楽です。
また、自動でマッピング用のクラスを生成sすることも可能です。
CodeFirst、DBFirst、ModelFirstなど開発手法も選ぶことができたり、他にも様々な便利な機能を兼ね備えたフレームワークです。
デメリットとしてはパフォーマンスが低いという点があります。パフォーマンスが重視されるプロジェクトでは場合によっては選択肢から外れることもあるかと思います。
コーディングが楽で、生産性が高い
パフォーマンスが低い
Dapper
DapperはSQL文をコード上に記述する必要があります。
また、自動でマッピングを行ってくれます。
パフォーマンスはADO.NETに近く、優れています。
EntityFrameWorkほど多機能ではありませんが、自動マッピング機能があるのが特徴としてあります。
また、SQL文については拡張ライブラリを使えば書く必要が無くなります。
使い方についてはこちらの記事にまとめています。
- パフォーマンスに優れている
- コーディングが楽で、生産性が高い
特になし(※あくまで個人の感想です)
まとめ
EntityFrameWorkを使う場合、SQLを記述する必要はなくなりますが、これはメリットにもデメリットにもなるかと思います。どういうSQLが発行されるのかを意識して開発していれば問題ないとは思いますが。
個人的にはDapperがオススメです。