ささいなことですが。

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

C#

LambdicSqlがβ版になりました!

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

LambdicSql -主要DBゆるふわ対応-

LambdicSql_α0.0.63をリリースしました。β版間近です! www.nuget.org マルチDB対応 なんと主要6DBで動作確認しています。Surfaceに全部インストールしましたが、意外と入るものですね。(SQLiteはインストール不要) DataBase type 動作確認 SQL Server ○ S…

LambdicSql - EntityFrameworkと仲良くなりました。

EntityFrameworkを使っているときでも、たまにSQLを直に書きたくなる場合がありますよね。そんな時はLambdicSqlを使うと便利です。そして、EntityFrameworkを使っている環境からLambdicSqlを使いやすい工夫を入れました。しかもそれでいてLambdicSql自体はDL…

LambdicSql - TableAttributeとColumnAttributeに対応しました。

LambdicSql_α0.0.53をリリースしました。 www.nuget.org テーブル名とカラム名のルール LambdicSqlのテーブル名とカラム名は、通常は変数名で表します。 public class Staff { //変数名がカラム名になる public int id { get; set; } public string name { g…

LambdicSql - α51 その他

パラメータ名称 @p_0って感じで連番にしていました。折角変数名を使っているのだから、それを変数名に使った方が良いとの意見をいただそのようにしました。 public void ParamName() { var min = 3000; var max = 4000; var query = Db<DB>.Sql(db => Select(new</db>…

LambdicSql - 文字列連携、そして2WaySQL -

LambdicSqlはLambdaでSQLを表現することを目的にしています。でも、やっぱり文字列も使えた方が安心感がありますよね。てわけで文字列を埋め込める機能を追加しました。 文字列を式に変換 こんな感じで文字列を途中に埋めれます。ただ文字列を入れるだけでは…

LambdicSql - 断捨離 O/Rマッパー機能 捨てました。-

LambdicSqlもSQLを実行して、その結果をオブジェクトにマッピングする機能がありました。Dapperよりも便利なところもあって、匿名クラスにマッピングすることもできてました。ではなぜやめたか。 ※Dapperでも匿名クラスにマッピングでる場合もあります。でも…

LambdicSql - 生まれ変わりました -

※注) 以前のブログもβ版に合わせてコードを修正しているので、前のブログ記事と比べても変化は感じられません。LambdicSql_α0.0.51 をリリースしました。コードのほとんどを書き直すほどの破壊的大変更を入れました。まさにRebornなのです! www.nuget.org …

lambdicSql - Queryの自由な組み立て - ③サブクエリ -

サブクエリは前からある機能ですが、おさらいで。 これも、クエリを先に作っておいて、Castで文中に入れ込みます。入れたところで展開されます。 Select句 public void SelectSubQuery() { //moneyの全合計 var sub = Db<DB>.Sql(db=> Select(new { total = Sum(</db>…

lambdicSql - Queryの自由な組み立て - ②Expression単位 -

LambdicSqlではExpression単位で分解、構築できるようにしました。 Castっていうキーワードがポイントです。Sql.Query().ExpressionはISqlExpressionという型を返します。これを文中に埋め込むとその文字列になります。でもISqlExpressionではコンパイル通ら…

lambdicSql - Queryの自由な組み立て - ①句単位 -

Queryの組み立てシリーズです。まずは、クエリ単位で分割、構築する方法です。Concatでクエリを連結できるようにしました。Concatは型に関してわざと緩くしました。使っているDBの型が違っても結合できます。最終的にSQL文字列になったときに意味が通ってい…

lambdicSql - Queryの自由な組み立て -

LambdicSqlα_0.0.40 をリリースしました。 Queryの組み立てに関して仕様追加と、既存の仕様を変更しました。α版なんで、破壊的な変更もバンバンいれます。 www.nuget.org Queryは組み合わせることが重要 以前、おださんからこのような資料を紹介してもらいま…

lambdicSql - CASE式に対応しました -

LabdicSql_α0.0.39をリリースしました。CASEに対応しています。 www.nuget.org 迷いましたがWHENとTHENはC#上ではWhenThenで書くようにしました。それからENDは書かなくても良いようにしました。 SELECT句への合成はサブクエリと同じ書き方で書くようにしま…

LambdicSql -DistinctとAll

α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>…

lambdicSql - パフォーマンス改善せねば④ SQLite -

プロファイラで見てわかりやすかったところを対応しました。 www.nuget.orgこっから先は難しいですね。 で、もう少しノイズを減らすためにDBをSQLサーバーからSQLiteに変えました。ファイルアクセスなんで余計なブレはすくないでしょう。ちなみに計測はSurfa…

lambdicSql - パフォーマンス改善せねば ③計測 -

※この書き方は最新のLambdicSqlとは異なります。速度計測の記録なので以前のままにしております。もう少し詳しく計測してみることにします。 VisualStudioのパフォーマンスプロファイラが便利ですね。 VSTestではイマイチやりにくいのでコンソールアプリでや…

lambdicSql - パフォーマンス改善せねば② -

※この書き方は最新のLambdicSqlとは異なります。速度計測の記録なので以前のままにしております。 やっぱ、昨日の仕様なし 前回コンパイルを減らすためにパラメータを渡すという仕様にしたのですが、やめます。 www.nuget.org 変数から値を取得するラムダを…

lambdicSql - パフォーマンス改善せねば -

※この書き方は最新のLambdicSqlとは異なります。速度計測の記録なので以前のままにしております。前回ので、Dapperに完敗を喫したわけですが、ここで勝負を投げるわけにはいかないですね。改善策を考えてみました。 遅いのは、コンパイル 他にも要因はあるか…

LambdicSql - 速度はまだまだでした・・・ -

※この書き方は最新のLambdicSqlとは異なります。速度計測の記録なので以前のままにしております。※@yone64さんと@neueccさんにご指摘いただき、タイトルを含め修正しました。 結果から書くと、負け負けのようですね。 これはパフォーマンス改善を先にやるか…

LambdicSql - α 0.0.14リリース - Nullable 対応

Nullableに対応しました。www.nuget.org public class RemunerationNullable { public int id { get; set; } public int? staff_id { get; set; } public DateTime? payment_date { get; set; } public decimal? money { get; set; } } public class DBNulla…

LambdicSql - α 0.0.13リリース - IS NULL 対応

IS NULL 対応しました。 www.nuget.org最初は IS NULL は何かキーワードを用意して特殊対応にしようと思ってました。int値の時とか面倒ですしね。でも、@yone64さんが、「昔にこの問題に対応したことがある」的なことを言っていたので、やっぱりnullの時に I…

LambdicSql - α 0.0.12リリース - プリペアド対応

GitHub - Codeer-Software/LambdicSql前回のTODOのうちのプリペアドに対応しました。 変数や直値で渡した値は自動でプリペアドに変換されます。 Where句だけでなく他の句でも同様に置き換え処理が実施されます。 ふう、一安心。 今までブログで書いたサンプ…

LambdicSql - TODO 今後の改善ポイント

GitHub - Codeer-Software/LambdicSql私のSQL力の低さを補うべく、SQLServerのMVPのおださんに、色々教えてもらいました。(えらい初心者向けのことから)いや、このシリーズの初回にも書きましたが、本当にSQLはほとんど書いたことがなかったのです。組み込み…

LambdicSql - 機能紹介 - サブクエリ

GitHub - Codeer-Software/LambdicSql前回も少し書きましたが、LambdicSqlはサブクエリを書けます。今回の例もこんなDBが対象です。 //テーブルが二つあるDB public class DB { public Staff tbl_staff { get; set; } public Remuneration tbl_remuneration …

LambdicSql - 機能紹介 - Where

GitHub - Codeer-Software/LambdicSqlWhereです。 私の少ないSQL経験ではプログラムで動的にSQLを組み立てる場合、これが一番面倒でした。なので色々できるように工夫しました。 サブクエリ使えるようにできたときは、めっちゃテンション上がりましたw操作対…

拡張メソッドで、あれ?って思ったこと

C#

あれ?って思ったことシリーズ第二弾。つい先日、Cで書かれた組み込み機器と通信するプログラムをC#で書きました。 で、テストを書くときに、@neueccさんのChaining Assertionを使いました。 これは、Assert書くのを気持ちよくしてくれるライブラリです。こ…

dynamicで、あれ?って思うこと

C#

Frienldyはdynamicを使うライブラリです。 で、dynamicって書いててちょっと直感的でない時があるんです。 よく考えると、「そうだよね。」ってなるんですけど、僕もハマったので書いておきます。 引数に渡すと、対象の関数まで動的になる 例えば、こんなメ…

C#の素晴らしさを語る会で登壇しました。

C#

他言語との連携(ネイティブから動的言語まで) だんだん過去に遡るのですがw。 ブログの目的として勉強会ロギングもありますので。 ちょっと前に、C#の素晴らしさを語る会と言うのがありまして、 そこでも話してきました。 http://vshtc.doorkeeper.jp/even…