.NET最轻便的SQL利器sqlkata

SqlKata查询生成器是一个用C# 编写的功能强大的Sql查询生成器。它生成的语句相当安全的。它遵循干净的命名约定,所以生成的SQL语句跟原生的非常相似。

SqlKata查询生成器通过在受支持的数据库引擎上提供一个抽象级别,允许您使用相同的统一API处理多个数据库,并且可搭配 dapper等的使用,某种意义上可以有效替代数据库的存储过程。SqlKata支持多种数据库,如SqlServer、MySql、PostgreSql、Oracle 、Sqlite和Firebird等。并支持多种复杂的查询,例如嵌套条件、从子查询中选择、过滤子查询、条件语句等。如果你的项目是轻量级别的话,你甚至可以把它当作轻量级ORM。.

使用方法

1、新建一个.NET7项目并添加sqlkata包

Install-Package SqlKataInstall-Package SqlKata.Execution//这个加上是可以执行

2、建立链接和声明使用

//建立链接var connection = new SqlConnection("Data Source=.;Initial Catalog=Test;Persist Security Info=True;User ID=sa;Password=654321");//实例化compiler 的SQLServer编译器var compiler = new SqlServerCompiler();//compiler与链接关联var db = new QueryFactory(connection, compiler);//执行一条查询,意思是查询客户表中名字为刘德华的数据var rel= db.Query("Customers").Where("Name","刘德华").Get();

生成的SQL如下,相当的规范,并且参数不是拼串出来的。

SELECT * FROM [Customers] WHERE [Name] = @p0',N'@p0 nvarchar(4000)',@p0=N'刘德华'

结果如下:

.NET最轻便的SQL利器sqlkata

你可以关联转换成你所需要的对象,这里将不做案例说明。

3、纯使用SQL生成功能

//实例化compiler 的SQLServer编译器var compiler = new SqlServerCompiler();//生成语句var query = new Query("Users").Where("Id", 1).Where("Status", "Active");SqlResult result = compiler.Compile(query);string sql = result.Sql;//结果:SELECT * FROM [Users] WHERE [Id] = @p0 AND [Status] = @p1

上面代码是纯输出SQL语句,不链接数据库,跟数据库没有任何关系。

开源地址:https://github.com/sqlkata/querybuilder。

文档:https://sqlkata.com/docs

在线编译器:https://sqlkata.com/playground

结语

SqlKata查询生成器简单吧,4条语句完成数据库的链接查询,不用配置一大堆东西。但是这玩意在ORM横行的时代有点low,它主要可以用于纯SQL的项目配合使用,比如ADO.NET,dapper等,当然如前文所说,你也可以把它当作轻量ORM。另外该项目也正常更新维护,所以还算是一个优质的项目。希望本文对你有所收获,欢迎留言讨论。