如何使用 HotChocolate 对突变进行投影?

问题描述 投票:0回答:1

当使用突变约定时,该方法的输出是单个对象:

public class Mutation
{
    [UseMutationConvention]
    public User? UpdateUserNameAsync([ID] Guid userId, string username)
    {
    //...
    }
}

是否意味着没有办法避免从数据库中过度获取?换句话说,在返回用户对象之前,我是否必须完全加载用户对象(意味着为每个后代属性放置一个 Include 和 ThenInclude )?

换句话说(只是为了演示问题而不是提出解决方案) - 我可以返回

IQueriable<User>
,它返回包含单个对象的集合 - 这样我可以利用
[UseProjection]
这将避免过度获取来自数据库,但突变的响应将是一个数组,这是不惯用的。

graphql hotchocolate
1个回答
0
投票

当使用突变约定时,该方法的输出是单个对象:

您可以将返回类型设为您想要的任何类型,布尔值、字符串、自定义对象等。

至于加载整个对象,取决于您计划如何实现返回类型。我们需要有关 API 的更多详细信息。

GraphQL 的美妙之处在于请求者可以指定它想要的信息并忽略其余信息,您可以利用这一点。 我假设运行更新方法,在大多数情况下您都必须将实体加载到内存中,为什么不在操作中返回它呢?

© www.soinside.com 2019 - 2024. All rights reserved.