系列导航 使用Hot Chocolate和.NET 6构建GraphQL应用文章索引 需求 对于查询来说,还有一大需求是针对查询的数据进行过滤,本篇文章我们准备实现GraphQL中基本的查询过滤. 思路 Hot Chocolate提供了UseFiltering属性来用于构造包含查询过滤的SQL语句,所以我们直接使用就好了. 实现 要使用Filtering属性,需要先在添加服务依赖注入的时候指定: ProgramExtension.cs builder.Services .AddGraphQLSe…
系列导航 使用Hot Chocolate和.NET 6构建GraphQL应用文章索引 需求 在上一篇文章使用Hot Chocolate和.NET 6构建GraphQL应用(3) -- 实现Query基础功能中,我们留了两个问题,一是通过GraphQL接口返回的Posts结果并没有获取到关联的Comment和Tag内容,二是返回结果没有进行排序.在这篇文章中,我们先来解决第一个问题. 思路 要获取关联实体,使用EF Core自然会想到在进行Query的时候添加一下Include语句就可以了,这种方…
系列导航 使用Hot Chocolate和.NET 6构建GraphQL应用文章索引 需求 在本文中,我们通过一个简单的例子来看一下如何实现一个最简单的GraphQL的接口. 实现 引入Hot Chocolate依赖包 由于我打算将GraphQL的相关逻辑放到Applicaiton层,并在Application和Api项目中使用,所以在该项目中引入以下依赖包 # Hot Chocolate在.NET Web应用中使用的主要Nuget包 HotChocolate.AspNetCore # Hot…
系列导航 使用Hot Chocolate和.NET 6构建GraphQL应用文章索引 需求 从前几篇文章可以看出,使用Hot Chocolate实现GraphQL接口是比较简单的,本篇文章我们继续查询中的另一个需求:排序. 思路 Hot Chocolate提供了UseSorting属性来用于构造包含查询过滤的SQL语句,所以我们直接使用就好了. 实现 要使用Sorting属性,需要先在添加服务依赖注入的时候指定: ProgramExtension.cs builder.Services .Add…
系列导航 使用Hot Chocolate和.NET 6构建GraphQL应用文章索引 需求 GraphQL中的查询分页相对来说是查询中比较难理解的,接口的Schema也和其他不一样.在这篇文章中,我们来实现简单的查询分页. 思路 Hot Chocolate提供了两种排序方式:基于Cursor的分页和基于Offset的分页.这两种方式的区别在于:基于Cursor的分页是随结果返回每条数据的一个游标字符串,下次分页查询是通过Where子句来比较游标的大小来决定去获取哪一部分的数据:而基于Offset…
系列背景 在进入微服务的实践系列之前,我们一起来学习和实践一下.NET应用开发生态中一些比较重要的技术,这个系列就是关于GraphQL在.NET 6应用中的实现. 系列导航 使用Hot Chocolate和.NET 6构建GraphQL应用(1) -- GraphQL及示例项目介绍 使用Hot Chocolate和.NET 6构建GraphQL应用(2) -- 实体相关功能实现 使用Hot Chocolate和.NET 6构建GraphQL应用(3) -- 实现Query基础功能 使用Hot C…
系列导航 使用Hot Chocolate和.NET 6构建GraphQL应用文章索引 前言 这篇文章是这个系列的第一篇,我们会简单地讨论一下GraphQL,然后介绍一下这个系列将会使用的示例项目. 关于GraphQL 关于GraphQL和Restful API的讨论已经有很多了,我在本文里不会试图去推销什么技术.GraphQL的官方主页在这里GraphQL | A query language for your API,它的出现是为了解决Restful API面临的当所需查询的数据结构呈现及其复…
系列导航 使用Hot Chocolate和.NET 6构建GraphQL应用文章索引 需求 在本文中,我们将会准备好用于实现GraphQL接口所依赖的底层数据,为下一篇文章具体实现GraphQL接口做准备. 实现 实体定义 在上一篇文章使用Hot Chocolate和.NET 6构建GraphQL应用(1) -- GraphQL及示例项目介绍我们给出的实体关系图稍微进行一些简化,去掉了关于评论回复的实体定义.我们先来实现关于Post/Comment/Tag的实体以及对应的Configuratio…
系列导航 使用Hot Chocolate和.NET 6构建GraphQL应用文章索引 需求 在讨论完GraphQL中的查询需求后,这篇文章我们将演示如何实现GraphQL中的数据添加任务. 思路 在GraphQL中,对数据进行查询使用query,而对于修改数据则需要使用mutation,包括新增和修改数据.Hot Chocolate在使用Mutation的逻辑上和使用Query的基本一致,但是需要根据需要定义用于创建或者更新的数据对象,所以我们直接进行实现. 实现 为了保持简单,我们先定义以下两…
系列导航 使用Hot Chocolate和.NET 6构建GraphQL应用文章索引 需求 在上一篇文章中,我们演示了如何使用Hot Chocolate进行GraphQL的Mutate新增数据,这篇文章我们将演示如何实现GraphQL中的数据更新任务. 思路 对数据的更新和新增数据的思路是一样的,都是使用Mutate机制进行更新. 实现 为了保持简单,我们先定义以下两个类型: // 定义更新Post的参数 public record UpdatePostInput(Guid Id, string…