Dapperの拡張ライブラリDapperExtensionsについてです。
Dapperとは
すでに解説されてる方がたくさんいらっしゃるので、そちらをご覧ください。
DapperExtensionsとは
DapperはORMと冠しているものの、実際はクエリすべて手打ちです。(それがいいんですが)
なんですが、単純なSELECTやINSERT、UPDATE、DELETEはいちいち手打ちするのも面倒!
そんな時に、さくっとかけるようになるDapperの拡張ライブラリです。
DapperExtensionsの基本的な使い方
※以下コード部分はC#で記載します。
まず、DapperとDapperExtensionsをNugetなどでプロジェクトに追加します。
PM> Install-Package Dapper PM> Install-Package DapperExtensions
例えばこんな構成のPersonsテーブルがあったとして、
※主キーはIdentity
こんな、エンティティクラスがあったとします。
public class Person { public int Id { get; set; } public string Name { get; set; } }
登録処理を記述するクラスにDapperと、DapperExtensions名前空間をusing します。
using DapperExtensions; using DapperExtensions.Mapper;
今回はテーブル名がPersons、エンティティクラス名がPerson、なので複数形と単数形を変換するルールをプログラム開始時に指定します。
(この処理は1回だけ呼べばOKです。)
DapperExtensions.DapperExtensions.DefaultMapper = typeof(PluralizedAutoClassMapper<>);
Connectionオブジェクトを作成します。
var connection = new SqlConnection("<接続文字列>"); connection.Open();
あとは以下ような感じで登録・更新・削除できます。
新規登録(Insert)
connection.Insert(new Person { Name = "テスト太郎" });
更新(Update)
connection.Update(new Person { Id = 1, Name = "テスト太郎更新" });
削除(Delete)
connection.Delete(new Person { Id = 1 });
※connectionのDispose処理記載するの省略してます。
その他
※デフォルトではテーブルの主キーが1つで、IdやPersonIdといった名称の場合にのみ対応します。
複合キーだったりした場合は別途マッピングルールを指定する必要があります。(あとテーブル名とエンティティクラス名が異なる場合とか)
(最初それについて書くつもりだったんですが、だらだらと長くなりそうだったので次回)
複合キーだったりした場合は別途マッピングルールを指定する必要があります。(あとテーブル名とエンティティクラス名が異なる場合とか)
(最初それについて書くつもりだったんですが、だらだらと長くなりそうだったので次回)
雑記
会社で業務システムに携わってるとあれな設計のテーブルも多く(1テーブルカラム100以上とか)、
そういったテーブルに対していちいち単純なSQL文書くのもめんどくさいのでとても重宝してます。
エンティティクラスと条件指定して簡単な検索(SELECT文発行)なんかもできるんですが、これについてはDapperExtensions使わずに、素直にクエリ書いたほうが楽だと思います。条件の指定方法が独特だったり、少し複雑にしようと思うと対応できなかったりします。
0 件のコメント:
コメントを投稿