読者です 読者をやめる 読者になる 読者になる

ささいなことですが。

Windowsアプリテスト自動化ライブラリFriendly開発者の日記です。

LambdicSqlがβ版になりました!

www.nuget.org

やっとβ版になりました。
1.0に向けて仕様は、ほぼ固まったかなー。これもおださんをはじめ、色々助言いただいた方々のおかげです。ありがとうございます!ちなみに織田さんには少し前からNugetのOwerにも入ってもらってます。

SQLをLambdaから作成するライブラリです

その名のとおりです。Linqとはアプローチが違って、書いたC#が(割と)そのままSQLになります。

public void TestStandard()
{
    var min = 3000;

    //C#でラムダを書くと
    var query = Db<DB>.Sql(db =>
        Select(new SelectData()
        {
            Name = db.tbl_staff.name,
            PaymentDate = db.tbl_remuneration.payment_date,
            Money = db.tbl_remuneration.money,
        }).
        From(db.tbl_remuneration).
            Join(db.tbl_staff, db.tbl_staff.id == db.tbl_remuneration.staff_id).
        Where(min < db.tbl_remuneration.money && db.tbl_remuneration.money < 4000));

    //文字列とパラメータになる!
    //デバッグ出力してみます。
    var info = query.Build(_connection.GetType());
    Debug.Print(info.SqlText);

    //後は、それを投げるだけ
    //Dapper使ってたらこんな感じです。
    var datas = _connection.Query(query).ToList();
}
SELECT
    tbl_staff.name AS Name,
    tbl_remuneration.payment_date AS PaymentDate,
    tbl_remuneration.money AS Money
FROM tbl_remuneration
    JOIN tbl_staff ON (tbl_staff.id) = (tbl_remuneration.staff_id)
WHERE ((@min) < (tbl_remuneration.money)) AND ((tbl_remuneration.money) < (@p_1))

シンプルなものだけじゃなくて、こんな複雑なものも書けます。

できること

こちらに一覧を書きました。(長いので転記はあきらめました。参照お願いします。)
github.com

多くの句、キーワード、関数、Window関数に対応

私が最近買った、SQLの入門書に書かれているDCLは全て対応しましたw。この本に載っているDCLはすべて書ける!(はず)CreateとかDropのようなDDLはサポートしていません。
「SQL ゼロからはじめるデータベース操作」
f:id:ishikawa-tatsuya:20160902233751p:plain

主要DBで動作

以下で動作確認しています。とは言え、同じ書き方でOKってわけでなくて、普通のSQLと同様に関数や句はDBごとに使える、使えないはあります。

DataBase type Support
SQL Server
SQLite
PostgreSQL
Oracle
MySQL
DB2

その他、便利機能が盛りだくさん

便利機能が盛りだくさんです。記事はα版の時に書いたものをβ版の仕様で修正していますので、参照お願いします。Dapper、EntityFrameworkの操作運用に関してはさらに便利にしたのでまた書きます。

早く1.0になりたい

残件は

  1. 関数コメント(英語)
  2. テスト追加
  3. チューニング
  4. リファクタリング

①が一番難易度高い...
9月中リリースを目標に進めよっと。