SqlKata查询生成器是一个用C# 编写的功能强大的Sql查询生成器。它是安全的,与框架无关。灵感来源于可用的顶级查询生成器,如Laravel Query Builder和 Knex

SqlKata有一个富有表现力的API。它遵循一个干净的命名约定,这与SQL语法非常相似。

通过在受支持的数据库引擎上提供一个抽象级别,允许您使用相同的统一API处理多个数据库,并且可搭配 dapper 使用,可以有效替代数据库的存储过程。

SqlKata支持复杂的查询,例如嵌套条件、从子查询中选择、过滤子查询、条件语句等。目前它有built-in编译器,用于SqlServer、MySql、PostgreSql、Oracle 和Firebird等。

扩展项目https://github.com/fairking/FluentSqlKata 可以轻松地与EntityFramework Core 6 一起使用,而无需进行大量代码更改.

完整的文档在https://sqlkata.com上查看。

安装

使用dotnet cli

$ dotnet add package SqlKata

使用Nuget包管理器

PM> Install-Package SqlKata

Quick Examples

Setup Connection
var connection = new SqlConnection("...");
var compiler = new SqlCompiler(); var db = new QueryFactory(connection, compiler)
检索所有记录
var books = db.Query("Books").Get();
仅检索已出版的图书
var books = db.Query("Books").WhereTrue("IsPublished").Get();
取回一本书
var introToSql = db.Query("Books").Where("Id", 145).Where("Lang", "en").First();
检索最近的书籍:最近10本
var recent = db.Query("Books").OrderByDesc("PublishedAt").Limit(10).Get();
包括作者信息
var books = db.Query("Books")
.Include(db.Query("Authors")) // Assumes that the Books table have a `AuthorId` column
.Get();

这将包括每个“书”上的“作者”属性

[{
"Id": 1,
"PublishedAt": "2019-01-01",
"AuthorId": 2
"Author": { // <-- included property
"Id": 2,
"...": ""
}
}]
加入作者表
var books = db.Query("Books")
.Join("Authors", "Authors.Id", "Books.AuthorId")
.Select("Books.*", "Authors.Name as AuthorName")
.Get(); foreach(var book in books)
{
Console.WriteLine($"{book.Title}: {book.AuthorName}");
}
条件查询
var isFriday = DateTime.Today.DayOfWeek == DayOfWeek.Friday;

var books = db.Query("Books")
.When(isFriday, q => q.WhereIn("Category", new [] {"OpenSource", "MachineLearning"}))
.Get();

分页
var page1 = db.Query("Books").Paginate(10);

foreach(var book in page1.List)
{
Console.WriteLine(book.Name);
} ... var page2 = page1.Next();
新增
int affected = db.Query("Users").Insert(new {
Name = "Jane",
CountryId = 1
});
更新
int affected = db.Query("Users").Where("Id", 1).Update(new {
Name = "Jane",
CountryId = 1
});
删除
int affected = db.Query("Users").Where("Id", 1).Delete();

最新文章

  1. MYSQL 数据库导入导出命令
  2. Kafka单机环境部署
  3. NuGet v3 feed带来的惊喜
  4. no permissions fastboot
  5. IIS8报错 403 404
  6. linux 网络栈中的queueing
  7. 扩展KMP——算法总结,来自于 迷路的鸽子
  8. Java 反射 分析类和对象
  9. PHP+MySql实现后台数据的读取
  10. jQuery 评分插件(转)
  11. Linux查找文件内容
  12. js面向对象关键点
  13. topcoder srm 600 div1
  14. 《JavaScript Dom 编程艺术》读书笔记-第11章
  15. SQLite的文件锁、并发与pager---(SQLite学习手册(锁和并发控制))
  16. 软件扒网站? 爬虫? F12查看源码? 查看网页源代码?浏览器sources? 区别和联系!
  17. Guitar Pro 添加装饰音
  18. python使用(一)
  19. 微信小程序 - 自定义tabbar(组件)
  20. PythonQt进阶

热门文章

  1. 淘淘蓝蓝的CSP-S神妙膜你赛2-淘淘蓝蓝喜欢01串 题解
  2. CF1703A YES or YES? 题解
  3. 第六天python3 函数、参数及参数解构(一)
  4. Collection集合和Collection的常用功能
  5. python在执行命令时添加环境变量或指定执行路径
  6. wdos centos64位通过yum来升级PHP
  7. 6.6 NOI 模拟
  8. 编码GBK的不可映射字符,最新版sublime
  9. 活动回顾|Apache DolphinScheduler x Pulsar 在线 Meetup
  10. 调用 StatefulWidget 组件的参数时(widget.xxx)报 Invalid Constant Value