私はSQLリクエストを作成するのに役立つ小さなライブラリを作成していますが(瞬間的にSELECTを行っています)、構文の一面に満足していません。説明する例があります:c#Fluent SQL Helper - 構文の改善
私は改善したいvar db = FluentDb.WithConnectionString("SqlCeTest");
var query = db.From("Customers")
.Where(FS.Col("Age") > 18 & FS.Col("Name").StartsWith("L"))
.OrderBy("BirthDate")
.Select("Name", "Age", "BirthDate");
var customers = query.ToList((r) => new
{
Name = r.Get<string>("Name"),
Age = r.Get<int>("Age"),
BirthDate = r.Get<DateTime?>("BirtDate")
});
の部分は、FluentSql.Column用スタンド(新FluentColumn(COLUMNNAME)を返す)ことになっています、FS.Col("ColumnName")
ですが、私は「何、そのコンテキストで少し長いそれを見つけます本当に好きなのはCol("ColumnName")
です...
私はそれを達成するために使うことができるトリックや別の構文を見ていますか?
私のアイデア:文字列の
- 拡張方法:
Where("Name".Col() == "Jon")
- インデクサを使用してファクトリオブジェクトを持つラムダ式:
誰でも短い/よりよい/より良いものを参照してください?
編集:
私の第二の考えはよさそうだが、私は別のコンテキストでそれを使用する場合の欠点があります: 私はいつかを選択(または[並べ替え、またはGROUPBY)そのような文でFluentColumnsを使用する必要があります。
query.Select(FS.Col("Name").As("Customer"), FS.Col("OrderId").Count().As("OrdersCount"));
私が繰り返さなければならないであろう「C =>」各列のために...
あなたの2番目のアプローチは非常に自然で、あなたの図書館のユーザーは、「魔法を理解する」ことなく、何をしているのかを理解することができます。 –
実際に私は質問を書くときにアイデアを持っていましたが、おそらくそれを実装するでしょうが、より良い解決策を求めて傷つけることはできません:) – Guillaume86