Dapper用クエリビルダ内蔵DBアクセスライブラリ「DapperAid」

C#用の拡張ライブラリをGitHub/Nugetで公開しました。
github.com

www.nuget.org.NETFramework4.5以降、.NETCore2.0以降、.NETStandard2.0以降に対応しています。

DBテーブルと同じ構造の(Dapper向けの)POCOクラスを定義しておくと、ライブラリ内蔵のクエリビルダにより適切なSelect・Insert・Update・Delete等のSQLが自動生成され、メソッド呼び出しだけでSQLを記述することなくDBデータを参照更新できるようになります。

  1. 取得/更新対象のデータは、POCOオブジェクトのKey項目の値、または、POCOクラスに対するラムダ式で指定します。
    指定した内容がデータ取得/更新SQLのWhere条件式に変換されます。
  2. 必要な箇所だけ手書きのSQLを混在させるようなこともできます。
    ラムダ式では表現しきれないWhere条件式やサブクエリ、OrderBy条件・Offset/Limit指定、With句やDistinct指定、データ更新時のカラムデフォルト値、などを指定できます。
  3. GroupBy指定を伴う集計クエリや、複数のテーブルをjoinした結果を取得するようなクエリについても、取得カラムやFROM句の内容のみSQLを手書き(POCOクラスの属性に設定)することで、メソッド呼び出しで実行可能となります。
  4. クエリビルダが生成したSQLの確認などに利用できる、ログ出力機能つきのDbConnectionオブジェクトも提供します。
  5. DBMSごとの相違にある程度対応しています。
    パラメータマーカー・カラム名等識別子のエスケープ方法・in条件指定・insert自動採番値把握方法、などについて、DBMS毎の方言を考慮したSQLが生成実行されます。
    現状ではPostgreSQLMySQLOracle・SQLServcer・MS-Access・SQLCE・SQLiteDB2に対応しています。

まあよくあるDapper向けのDB操作支援ライブラリですが、特に上記2・3が実現できるようにちょっと工夫しています。
DBアクセスのSQLを書かずにデータの参照更新を行いたく、けれどもどうしてもSQLを手書きしなければならない箇所はピンポイントでSQLを書きたい(その部分以外は自動生成されるSQLに任せたい)という方に向いているライブラリかと思います。

使い方/リファレンスはGitHubのトップページに記載してあります(中途半端に英語ですが、例示してあるソースコードを見ればだいたいわかると思います)。よろしければお試しください。


※2019/4/13時点のバージョンは0.8.1、基本機能がひととおり動くことは確認していますが、DBMSごとの挙動確認や条件式等のさまざまなバリエーションの動作確認はまだ不十分な状態です。
不具合等を見つけた方はGitHubのIssueかこのブログへのコメントで報告いただけると大変助かります。