使用Hot Chocolate和.NET 6构建GraphQL应用(6) —— 实现Query排序功能
2022-02-08 23:03
961 查看
系列导航
使用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应用(7) —— 实现Query分页功能
- 使用Hot Chocolate和.NET 6构建GraphQL应用(8) —— 实现Mutate添加数据
- 在Web微信应用中使用博客园RSS以及Quartz.NET实现博客文章内容的定期推送功能
- 使用.net FtpWebRequest 实现FTP常用功能收藏
- 使用.net 2.0(c#)来实现一般的FTP功能
- ASP.NET MVC5+MySql使用ASP.NET 身份验证实现用户和角色功能 1 概述 目标:使用MySql数据库,建立一个使用ASP.NET 身份验证的应用,并实现角色功能,身份
- 使用ant实现svn管理得eclipse插件开发项目的日构建功能(ant1.7.1+svn1.6.3+eclipse3.4.2)
- [置顶] ExtJs4.2应用:使用ExtJs扩展组件searchfield实现数据搜索功能
- C#之使用NotifyIcon实现任务栏托盘菜单,图标闪烁效果及气泡提示 很多程序是只需要后台运行的,甚至不需要自己的应用界面。NotifyIcon提供了程序在任务栏的显示功能 程序下载链接如下
- 【.NET 6】使用.NET 6开发minimal api以及依赖注入的实现、VS2022热重载和自动反编译功能的演示
- 使用.net FtpWebRequest 实现FTP常用功能
- Table 组件使用指南之十五:使用POJO绑定并实现排序与过滤功能
- C#开发微信门户及应用(39)--使用微信JSSDK实现签到的功能
- 基于proteus的51单片机仿真实例七十七、使用555实现定时功能应用实例
- 【Spark Summit EU 2016】使用Mobius在.NET平台上构建你的下一个Spark应用
- 使用Java 8的二元函数BiFunction,采用函数式编程思维实现List元素的自定义排序功能
- 使用.NET 6开发TodoList应用(11)——使用FluentValidation和MediatR实现接口请求验证
- 使用javascript 实现.net 验证控件功能
- 使用Quartz动态实现应用的定时功能
- 使用.net FtpWebRequest 实现FTP常用功能 上传 下载 获取文件列表 移动 切换目录 改名 .