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 ExamplesSetup Connectionvar 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();
【SqlKata - 方便好用的 Sql query builder】
推荐阅读
- 拯救者r9000x和拯救者y9000x哪个好-拯救者r9000x和y9000x对比
- iphone13和iphone12拍照对比_哪款拍照更好
- 好用的文章生成软件有哪些
- 跆拳道服哪个牌子好?跆拳道服十大品牌排行榜
- iQOOZ5x和iqooz5哪个好_iQOOZ5x和iqooz5区别对比
- 2021年Q4手机用户偏好榜-2021年安兔兔第四季度用户偏好榜
- 骁龙870和天玑1200处理器哪个好?
- 华为nova9和小米11青春版哪个好_哪款更值得入手
- 骁龙870和天玑1200哪个玩游戏更好_骁龙870和天玑1200哪个好
- 华为p50pro和荣耀magic3pro哪个好_手机区别对比