やっとβ版になりました。
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 ゼロからはじめるデータベース操作」
主要DBで動作
以下で動作確認しています。とは言え、同じ書き方でOKってわけでなくて、普通のSQLと同様に関数や句はDBごとに使える、使えないはあります。
DataBase type | Support |
SQL Server | ○ |
SQLite | ○ |
PostgreSQL | ○ |
Oracle | ○ |
MySQL | ○ |
DB2 | ○ |
その他、便利機能が盛りだくさん
便利機能が盛りだくさんです。記事はα版の時に書いたものをβ版の仕様で修正していますので、参照お願いします。Dapper、EntityFrameworkの操作運用に関してはさらに便利にしたのでまた書きます。