Sqlを動的に作成する場合には、「空なら消えてくれればいいのに」があります。 LambdicSqlでは以下の場合には空を渡すと要素や句が消えます。 Select句のメンバ Join Where Having Order By Select句のメンバ //Typeを表示するときのみCase式を挿入する var …
github.com組み合わせの自由度がアップしました。 Sqlビルダーという位置づけになった今、Sql構築の自由度は重要です。 +演算子のサポート ちょっと前から生成したsql同士のサポートはありました。 var select = Db<DB>.Sql(db => Select(new SelectData1 { Name</db>…
github.comこの世の全てのSQLをC#で表現してやる! ってことでマルチプラットフォーム対応もしました。 .NETCoreやPCLでも使えます。 SQLiteと連携 Xamarinって言ったらSQLiteです。 LambdicSqlはSQLiteとの連携機能も入れています。 まずは、LambdicSqlとsq…
github.com まだβ版です。とはいえ、今度こそ着実にリリースに近づいています。 この辺で最近入れた機能をご紹介させていただきます。 それは句や関数を簡単に追加できる機能です。 この世の全てのSQLをC#で表現するポテンシャルを持たせました。 若干言い過…
C# Advent Calendar 2016の記事になります。26日ですが、今朝見たら空きがあったので書かせてもらうことにしました。 私は趣味でOSSのライブラリを作ってます。テスト自動化用のライブラリのFriendlyとか、最近はLambdicSqlというC#のラムダでSQLを作成する…
初Xamarinやってみました! しかも僕はAndroid、iPhoneのプログラムも初です!でも実はモバイルプログラム歴は3年くらいあるんですよ。 ガラケーですけどねw ソフトバンク?なんですかそれ?僕がやってた頃はJ-PhoneとかVodafoneでしたよ。 あの頃は徹夜も散…
なぜか今日はMFCですw とある人から「MFC共Cのプロジェクトを<標準Windowsライブラリを使用する>に変更してもビルド通るんだけど」って話を聞きました。んー、まあもともと共有DLLをリンクしてるからありえなくもないよなーっと思って実験してみました。①M…
Visual Studio for Mac を触り始めましたが、Windows版との互換性が気になりました。ちょっと実験してみます。(ていうか、この辺はXamarinStudioと同じなんでしょうけど、XamarinStudioの仕様も知らないので) コンソールアプリ for Mac で作ったコンソール…
なんと、人生初のmacを買いました。 このブログもmacで書いてます。 慣れてないから、時間かかるw そしてVisual Studio for Macをインストールしました。 www.visualstudio.com インストール時もキャプチャしておけばよかったですね。 まあ、特に問題なく入…
これですね。 .Netの新しい機能の勉強会です。 connpass.com僕はWPFとUWPのテスト自動化に関して話をしてきました。 まあ、WPFは新技術でもないですけど・・・。 とは言え、いい感じに枯れてきたので、日本でもようやく導入が始まってきたようですね。(過去…
すごい久しぶりのリリースです。半年以上ほったらかしてましたからねー。 www.nuget.org そもそも、動かなくなってた おいおいって感じですが。UWPの画面描画に関するオブジェクトの生成をメインスレッド以外で実行した場合、例外が発生するようになっていま…
www.nuget.orgやっとβ版になりました。 1.0に向けて仕様は、ほぼ固まったかなー。これもおださんをはじめ、色々助言いただいた方々のおかげです。ありがとうございます!ちなみに織田さんには少し前からNugetのOwerにも入ってもらってます。 SQLをLambdaから…
SQL力を高めるべく、SqlWorld :: SQLWorld★大阪#38に参加してきました! 簡単なものから高度すぎるものまで、レンジの広い問題が出題されました。 で、その中でこんな問題がありました。 友達の人数を抽出するというものです。 で、私はこんなSQLを書きまし…
LambdicSql_α0.0.63をリリースしました。β版間近です! www.nuget.org マルチDB対応 なんと主要6DBで動作確認しています。Surfaceに全部インストールしましたが、意外と入るものですね。(SQLiteはインストール不要) DataBase type 動作確認 SQL Server ○ S…
EntityFrameworkを使っているときでも、たまにSQLを直に書きたくなる場合がありますよね。そんな時はLambdicSqlを使うと便利です。そして、EntityFrameworkを使っている環境からLambdicSqlを使いやすい工夫を入れました。しかもそれでいてLambdicSql自体はDL…
LambdicSql_α0.0.53をリリースしました。 www.nuget.org テーブル名とカラム名のルール LambdicSqlのテーブル名とカラム名は、通常は変数名で表します。 public class Staff { //変数名がカラム名になる public int id { get; set; } public string name { g…
パラメータ名称 @p_0って感じで連番にしていました。折角変数名を使っているのだから、それを変数名に使った方が良いとの意見をいただそのようにしました。 public void ParamName() { var min = 3000; var max = 4000; var query = Db<DB>.Sql(db => Select(new</db>…
LambdicSqlはLambdaでSQLを表現することを目的にしています。でも、やっぱり文字列も使えた方が安心感がありますよね。てわけで文字列を埋め込める機能を追加しました。 文字列を式に変換 こんな感じで文字列を途中に埋めれます。ただ文字列を入れるだけでは…
LambdicSqlもSQLを実行して、その結果をオブジェクトにマッピングする機能がありました。Dapperよりも便利なところもあって、匿名クラスにマッピングすることもできてました。ではなぜやめたか。 ※Dapperでも匿名クラスにマッピングでる場合もあります。でも…
※注) 以前のブログもβ版に合わせてコードを修正しているので、前のブログ記事と比べても変化は感じられません。LambdicSql_α0.0.51 をリリースしました。コードのほとんどを書き直すほどの破壊的大変更を入れました。まさにRebornなのです! www.nuget.org …
サブクエリは前からある機能ですが、おさらいで。 これも、クエリを先に作っておいて、Castで文中に入れ込みます。入れたところで展開されます。 Select句 public void SelectSubQuery() { //moneyの全合計 var sub = Db<DB>.Sql(db=> Select(new { total = Sum(</db>…
LambdicSqlではExpression単位で分解、構築できるようにしました。 Castっていうキーワードがポイントです。Sql.Query().ExpressionはISqlExpressionという型を返します。これを文中に埋め込むとその文字列になります。でもISqlExpressionではコンパイル通ら…
Queryの組み立てシリーズです。まずは、クエリ単位で分割、構築する方法です。Concatでクエリを連結できるようにしました。Concatは型に関してわざと緩くしました。使っているDBの型が違っても結合できます。最終的にSQL文字列になったときに意味が通ってい…
LambdicSqlα_0.0.40 をリリースしました。 Queryの組み立てに関して仕様追加と、既存の仕様を変更しました。α版なんで、破壊的な変更もバンバンいれます。 www.nuget.org Queryは組み合わせることが重要 以前、おださんからこのような資料を紹介してもらいま…
LabdicSql_α0.0.39をリリースしました。CASEに対応しています。 www.nuget.org 迷いましたがWHENとTHENはC#上ではWhenThenで書くようにしました。それからENDは書かなくても良いようにしました。 SELECT句への合成はサブクエリと同じ書き方で書くようにしま…
α0.0.36をリリースしました。 www.nuget.org DistinctとAll enumで指定できるように変更しました。 Select文 [TestMethod] public void Distinct() { var query = Db<DB>.Sql(db => Select(AggregatePredicate.Distinct, new { id = db.tbl_remuneration.staff_i</db>…
プロファイラで見てわかりやすかったところを対応しました。 www.nuget.orgこっから先は難しいですね。 で、もう少しノイズを減らすためにDBをSQLサーバーからSQLiteに変えました。ファイルアクセスなんで余計なブレはすくないでしょう。ちなみに計測はSurfa…
※この書き方は最新のLambdicSqlとは異なります。速度計測の記録なので以前のままにしております。もう少し詳しく計測してみることにします。 VisualStudioのパフォーマンスプロファイラが便利ですね。 VSTestではイマイチやりにくいのでコンソールアプリでや…
※この書き方は最新のLambdicSqlとは異なります。速度計測の記録なので以前のままにしております。 やっぱ、昨日の仕様なし 前回コンパイルを減らすためにパラメータを渡すという仕様にしたのですが、やめます。 www.nuget.org 変数から値を取得するラムダを…
※この書き方は最新のLambdicSqlとは異なります。速度計測の記録なので以前のままにしております。前回ので、Dapperに完敗を喫したわけですが、ここで勝負を投げるわけにはいかないですね。改善策を考えてみました。 遅いのは、コンパイル 他にも要因はあるか…