「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
Dapperは、Micro-ORMである。
- Micro-ORMは、RDBとはMappingないので、ORMではない。
- 言うなれば、DataMapper?とかTableMapper?と言った機能。
- 実際、Dapperは純粋な実行とMappingのみ提供するよう開発されている。
- パフォーマンスと使いやすさを念頭に置いて開発されている。
機能 †
以下の機能を持つ。
クエリビルダ †
無い。生SQLを実行する機能。
SQL実行 †
- パラメタライズド・クエリ機能はアリ。
- ADO.NETよりパラメタライズド処理が書き易い。
- IN句に含めるリストに値をバインドする機能
- ストアドプロシジャを実行可能。
- トランザクション処理に対応する。
マッピング †
結果セットとBeranのマッピングする機能。
- Queryメソッドでは、IEnumrable<Dynamic>型に格納される。
- Query<T>メソッドでは、T型のBean(POCO)にマッピングして、格納される。
- 列名に別名を付与する場合は、AS句を使用すれば良い。
- 大文字・小文字は関係なくマッピングする。
- 別途マッピングルールを型毎に設定することが可能。
- ADO.NET 型付DataSet? の場合よりマッピング処理が書き易い。
実装 †
主に、ADO.NET の IDBConnection に拡張メソッドを追加している。
拡張 †
以下の様なCRUDヘルパーがある。
更新用の拡張ライブラリ †
DapperExtensions? †
- SQLを書かずして更新処理を実装する。
- テーブルに対応したBean(POCO)が必要になる。
- デフォルトでは以下の条件に合致している必要がある。
- テーブルの主キーが1つ
- Idや****Idといった名称
クエリビルダ †
Dapper.Rainbow †
Dapper.Contrib †
JSON †
DapperのQuery<dynamic>()の戻り値をJSONへ変換して、
サーバーをJSON吐く土管にする場合、以下のようにできる。
感想 †
Dapperを使って認証基盤のユーザストアの永続化をO/R的に実装してみた感想。
- O/Rはエンプラ・ドメインのRDBデータアクセス的には正直微妙。
- プログラム側のデータの持たせ方が根本的に異なる(特に一覧系)。
- Dapperは単純な分、問題が浮き彫りになる(EFは複雑で気が付き難い)。
- ただしNoSQLやX.500などユーザストアを可変にするには、
オブジェクト <---> ストア的実装が必要なのは確か。
参考 †
Tags: :データアクセス, :.NET開発, :ADO.NET