何らかの理由で、クエリ インターフェイスとしての linq が気に入らず、しばらく前に SQL 生成ライブラリの作成を開始しました。LambdaSql を見てください。今のところ、select
句とwhere
フィルターの基本的なシナリオが含まれています。設定フィールド、where、group by、having、order by、join、ネストされたクエリは既にサポートされています。挿入、更新、および削除は、後でサポートされる予定です。また、既存の動作を拡張するためのいくつかのポイントも含まれています。たとえば、Limit
その方法を使用して実装されます。
例:
var qry = new SqlSelect
(
new SqlSelect<Person>()
.AddFields(p => p.Id, p => p.Name)
.Where(SqlFilter<Person>.From(p => p.Name).EqualTo("Sergey"))
, new SqlAlias("inner")
).AddFields<Person>(p => p.Name);
Console.WriteLine(qry.ParametricSql);
Console.WriteLine("---");
Console.WriteLine(string.Join("; ", qry.Parameters
.Select(p => $"Name = {p.ParameterName}, Value = {p.Value}")));
出力:
SELECT
inner.Name
FROM
(
SELECT
pe.Id, pe.Name
FROM
Person pe
WHERE
pe.Name = @w0
) AS inner
---
Name = @w0, Value = Sergey
詳細はこちらhttps://github.com/Serg046/LambdaSql