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】
经验总结扩展阅读
- 求好吃又简单的汤
- 形容心情好的句子
- 小苏打去斑效果好吗
- 急性胃病可以治好吗
- 胃不好要怎么调理
- 男朋友生气了,哪些星座女最懂得怎么哄好
- 呛炒娃娃菜怎么做如何做好吃
- 大年初三的祝福句子
- 钻石画贴好后需要电吹风定型吗
- 麦博m200m400哪个好