- 追加された行はこの色です。
- 削除された行はこの色です。
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。
-[[戻る>データアクセスのいろいろ]]
* 目次 [#xc0629db]
#contents
*概要 [#n112bc5b]
Dapperは、Micro-ORMである。
-Micro-ORMは、RDBとはMappingないので、ORMではない。
-言うなれば、DataMapperとかTableMapperと言った機能。
-実際、Dapperは純粋な実行とMappingのみ提供するよう開発されている。
-パフォーマンスと使いやすさを念頭に置いて開発されている。
*機能 [#x4d90167]
以下の機能を持つ。
**クエリビルダ [#ifc13812]
無い。生SQLを実行する機能。
**SQL実行 [#ae021507]
-パラメタライズド・クエリ機能はアリ。
--ADO.NETよりパラメタライズド処理が書き易い。
--IN句に含めるリストに値をバインドする機能
-ストアドプロシジャを実行可能。
-トランザクション処理に対応する。
**マッピング [#gb94a6a8]
結果セットとBeranのマッピングする機能。
-Queryメソッドでは、IEnumrable<Dynamic>型に格納される。
-Query<T>メソッドでは、T型のBean(POCO)にマッピングして、格納される。
-列名に別名を付与する場合は、AS句を使用すれば良い。
-大文字・小文字は関係なくマッピングする。
-別途マッピングルールを型毎に設定することが可能。
-ADO.NET 型付DataSet の場合よりマッピング処理が書き易い。
**実装 [#q3dc7250]
主に、ADO.NET の IDBConnection に拡張メソッドを追加している。
*拡張 [#x97c4fa1]
以下の様なCRUDヘルパーがある。
**更新用の拡張ライブラリ [#i2b00ee4]
***DapperExtensions [#g2da64d7]
-SQLを書かずして更新処理を実装する。
-テーブルに対応したBean(POCO)が必要になる。
-デフォルトでは以下の条件に合致している必要がある。
--テーブルの主キーが1つ
--Idや****Idといった名称
-参考
--hollycot: DapperExtensionsを使ってみる~
http://hollycot.blogspot.jp/2015/05/dapperextensions.html
--hollycot: DapperExtensionsを使ってみる2~
http://hollycot.blogspot.jp/2015/09/dapperextensions.html
**クエリビルダ [#ye7bc04a]
***Dapper.Rainbow [#hab4a1bf]
***Dapper.Contrib [#mc6cf830]
*JSON [#x6685da9]
DapperのQuery<dynamic>()の戻り値をJSONへ変換して、~
サーバーをJSON吐く土管にする場合、以下のようにできる。
-DapperのQuery<dynamic>()の戻りをASP.NET MVCのJsonResultでいい感じで返す - きよくらの備忘録~
http://kiyokura.hateblo.jp/entry/2014/12/04/000818
-DapperのQuery<dynamic>()の結果セットのフィールド名を取得する - きよくらの備忘録~
http://kiyokura.hateblo.jp/entry/2016/12/09/131602
*感想 [#f04a645b]
Dapperを使って認証基盤のユーザストアの永続化をO/R的に実装してみた感想。
-O/Rはエンプラ・ドメインのRDBデータアクセス的には正直微妙。
-プログラム側のデータの持たせ方が根本的に異なる(特に一覧系)。
-Dapperは単純な分、問題が浮き彫りになる(EFは複雑で気が付き難い)。
-ただしNoSQLやX.500などユーザストアを可変にするには、~
オブジェクト <---> ストア的実装が必要なのは確か。
*参考 [#c5ba050d]
-ORMとかdapper dot netについてお話させていただきました - きよくらの備忘録~
http://kiyokura.hateblo.jp/entry/20131014/p1
-neue cc - Micro-ORMとC#(とDapperカスタマイズ)~
http://neue.cc/2012/12/11_390.html
-Dapperの簡単な使い方メモ (Dapper .NET, Micro ORM, 速い) - いろいろ備忘録日記~
http://devlights.hatenablog.com/entry/2014/02/02/000000
--Dapper .NETのサンプル~
https://gist.github.com/devlights/8779382
-Dapper.Netを使ってみる - けさらんぱさらん~
http://d.hatena.ne.jp/cer1974/20120205/1328450442
-C# + MySQL + Dapper で軽量 O/R Mapper | Aiming 開発者ブログ~
https://developer.aiming-inc.com/programming/csharp-mysql-dapper/
-How to work with Dapper in C# | InfoWorld~
http://www.infoworld.com/article/3025784/application-development/how-to-work-with-dapper-in-c.html
-データ ポイント - Dapper、Entity Framework、およびハイブリッド アプリ~
https://msdn.microsoft.com/ja-jp/magazine/mt703432.aspx
----
Tags: [[:データアクセス]], [[:.NET開発]], [[:ADO.NET]]