有一个DBLinq:
适用于Oracle、PostgreSQL、MySQL、Ingres、SQLite、Firebird和...SQL Server(C# 3.0)的LINQ提供程序
当您使用LINQ to SQL生成查询时,可以查看生成的SQL并保存它。
虽然它不符合您“不使用LINQ”的要求。但是如果您有可用的LINQ,为什么不使用呢?
由于某些原因,我不喜欢Linq作为查询接口,所以我一段时间以前开始创建了一个SQL生成库。请看LambdaSql。
目前它包含基本的select
子句和where
过滤器场景。已经支持设置字段、where、group by、having、order by、joins和嵌套查询。插入、更新和删除将在以后得到支持。它还包含一些扩展现有行为的要点。例如,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