使用Hot Chocolate和.NET 6构建GraphQL应用(6) —— 实现Query排序功能
系列导航
使用Hot Chocolate和.NET 6构建GraphQL应用文章索引
需求
从前几篇文章可以看出,使用Hot Chocolate实现GraphQL接口是比较简单的,本篇文章我们继续查询中的另一个需求:排序。
思路
Hot Chocolate提供了UseSorting属性来用于构造包含查询过滤的SQL语句,所以我们直接使用就好了。
实现
要使用Sorting属性,需要先在添加服务依赖注入的时候指定:
ProgramExtension.cs
builder.Services
.AddGraphQLServer()
.AddFiltering()
.AddProjections()
.AddSorting()
.AddQueryType<Query>()
.AddType<PostType>();
然后在接口上方添加UseSorting即可,注意属性添加的顺序。
Query.cs
[UseProjection]
[UseFiltering]
[UseSorting]
public IQueryable<Post> GetPosts([Service] IRepository<Post> repository) => repository.GetAsQueryable();
这样就实现了查询结果的排序,下面我们来验证一下。
验证
启动Api项目,调用接口:

可以看到在返回体中数据已经按title升序排列了,我们再来看一下控制台输出的EF Core日志:
[15:17:55 INF] Executed DbCommand (6ms) [Parameters=[@__p_0='?' (Size = 7)], CommandType='Text', CommandTimeout='30']
SELECT "p"."Id", "p"."Title", "p"."Author", "c"."Content", "c"."Id", "t0"."Name", "t0"."PostsId", "t0"."TagsId", "t0"."Id"
FROM "Posts" AS "p"
LEFT JOIN "Comments" AS "c" ON "p"."Id" = "c"."PostId"
LEFT JOIN (
SELECT "t"."Name", "p0"."PostsId", "p0"."TagsId", "t"."Id"
FROM "PostTag" AS "p0"
INNER JOIN "Tags" AS "t" ON "p0"."TagsId" = "t"."Id"
) AS "t0" ON "p"."Id" = "t0"."PostsId"
WHERE (@__p_0 = '') OR (instr("p"."Title", @__p_0) > 0)
ORDER BY "p"."Title", "p"."Id", "c"."Id", "t0"."PostsId", "t0"."TagsId"
[15:17:55 INF] Executed endpoint 'Hot Chocolate GraphQL Pipeline'
从日志中可以看到Hot Chocolate已经为生成的SQL语句添加了Order排序子句了,在示例中我们选择了title(ASC)作为排序的条件来展示。
总结
在本文中我们实现了查询排序,下一篇文章将会介绍如何进行查询数据的分页功能。
使用Hot Chocolate和.NET 6构建GraphQL应用(6) —— 实现Query排序功能的更多相关文章
- 使用Hot Chocolate和.NET 6构建GraphQL应用(4) —— 实现Query映射功能
系列导航 使用Hot Chocolate和.NET 6构建GraphQL应用文章索引 需求 在上一篇文章使用Hot Chocolate和.NET 6构建GraphQL应用(3) -- 实现Query基 ...
- 使用Hot Chocolate和.NET 6构建GraphQL应用(3) —— 实现Query基础功能
系列导航 使用Hot Chocolate和.NET 6构建GraphQL应用文章索引 需求 在本文中,我们通过一个简单的例子来看一下如何实现一个最简单的GraphQL的接口. 实现 引入Hot Cho ...
- 使用Hot Chocolate和.NET 6构建GraphQL应用(5) —— 实现Query过滤功能
系列导航 使用Hot Chocolate和.NET 6构建GraphQL应用文章索引 需求 对于查询来说,还有一大需求是针对查询的数据进行过滤,本篇文章我们准备实现GraphQL中基本的查询过滤. 思 ...
- 使用Hot Chocolate和.NET 6构建GraphQL应用(7) —— 实现Query分页功能
系列导航 使用Hot Chocolate和.NET 6构建GraphQL应用文章索引 需求 GraphQL中的查询分页相对来说是查询中比较难理解的,接口的Schema也和其他不一样.在这篇文章中,我们 ...
- 使用Hot Chocolate和.NET 6构建GraphQL应用文章索引
系列背景 在进入微服务的实践系列之前,我们一起来学习和实践一下.NET应用开发生态中一些比较重要的技术,这个系列就是关于GraphQL在.NET 6应用中的实现. 系列导航 使用Hot Chocola ...
- 使用Hot Chocolate和.NET 6构建GraphQL应用(1)——GraphQL及示例项目介绍
系列导航 使用Hot Chocolate和.NET 6构建GraphQL应用文章索引 前言 这篇文章是这个系列的第一篇,我们会简单地讨论一下GraphQL,然后介绍一下这个系列将会使用的示例项目. 关 ...
- 使用Hot Chocolate和.NET 6构建GraphQL应用(2) —— 实体相关功能实现
系列导航 使用Hot Chocolate和.NET 6构建GraphQL应用文章索引 需求 在本文中,我们将会准备好用于实现GraphQL接口所依赖的底层数据,为下一篇文章具体实现GraphQL接口做 ...
- 使用Hot Chocolate和.NET 6构建GraphQL应用(8) —— 实现Mutate添加数据
系列导航 使用Hot Chocolate和.NET 6构建GraphQL应用文章索引 需求 在讨论完GraphQL中的查询需求后,这篇文章我们将演示如何实现GraphQL中的数据添加任务. 思路 在G ...
- 使用Hot Chocolate和.NET 6构建GraphQL应用(9) —— 实现Mutate更新数据
系列导航 使用Hot Chocolate和.NET 6构建GraphQL应用文章索引 需求 在上一篇文章中,我们演示了如何使用Hot Chocolate进行GraphQL的Mutate新增数据,这篇文 ...
随机推荐
- 【汇编语言】李忠《x86汇编语言——从实模式到保护模式》
该书配套资料网址已经失效 配套资料和章节答案下载 查看最新作者网址:http://www.lizhongc.com/ 勘误表:https://wenku.baidu.com/view/9213288b ...
- 「AHOI2013」 差异
知识点: SA,线段树,单调栈 原题面 Loj Luogu 题意简述 给定一长度为 \(n\) 的字符串 \(S\),令 \(T_i\) 表示从第 \(i\) 个字符开始的后缀,求: \[\sum_{ ...
- rsync 守护进程及实时同步
目录 rsync 守护进程及实时同步 rsync简介 rsync特性 rsync应用场景 cp命令 scp命令 rsync的传输方式 rsync的传输模式 rsync实际使用 rsync命令 案例 r ...
- [数据结构]常见数据结构的typedef类型定义总结
目录 数据结构类型定义: 1.线性表 线性表(顺序存储类型描述): 线性表(动态存储类型描述) 2.线性表的链式表示 双链表的结点类型描述: 静态链表结点类型的描述: 3.栈的数据结构 顺序栈的数据结 ...
- Gradle sync failed (3 s 402 ms) - Android Studio问题解决方法
问题:Gradle同步失败 解决方法: 删除gradle-wrpper.jar中的 implementation 'com.android.support:design:30.+' 最后在Build中 ...
- css 基础 css引入方式
color:red; //改变颜色 font-size:18px : //改变文字大小 background-color : blue; //设置背景颜色 width:100px ://设置宽度 he ...
- hadoop 之 常用基本操作
HDFS 常用命令(hadoop fs.hadoop dfs.hdfs dfs): hadoop fs -ls 显示当前目录结构,-ls -R 递归显示目录结构 hadoop fs -mkdir 创建 ...
- Java实现单词统计
原文链接: https://www.toutiao.com/i6764296608705151496/ 单词统计的是统计一个文件中单词出现的次数,比如下面的数据源 其中,最终出现的次数结果应该是下面的 ...
- 使用.NET 6开发TodoList应用(23)——实现请求限流
系列导航及源代码 使用.NET 6开发TodoList应用文章索引 需求 Rate Limiting允许保护我们的API服务免受过多请求的连接导致的性能下降,如果请求次数超过了限制,API服务端将会拒 ...
- Maven+ajax+SSM实现编辑修改
转载自:https://www.cnblogs.com/kebibuluan/p/9017754.html 3.尚硅谷_SSM高级整合_使用ajax操作实现修改员工的功能 当我们点击编辑案例的时候,我 ...