当使用突变约定时,该方法的输出是单个对象:
public class Mutation
{
[UseMutationConvention]
public User? UpdateUserNameAsync([ID] Guid userId, string username)
{
//...
}
}
是否意味着没有办法避免从数据库中过度获取?换句话说,在返回用户对象之前,我是否必须完全加载用户对象(意味着为每个后代属性放置一个 Include 和 ThenInclude )?
换句话说(只是为了演示问题而不是提出解决方案) - 我可以返回
IQueriable<User>
,它返回包含单个对象的集合 - 这样我可以利用 [UseProjection]
这将避免过度获取来自数据库,但突变的响应将是一个数组,这是不惯用的。
当使用突变约定时,该方法的输出是单个对象:
您可以将返回类型设为您想要的任何类型,布尔值、字符串、自定义对象等。
至于加载整个对象,取决于您计划如何实现返回类型。我们需要有关 API 的更多详细信息。
GraphQL 的美妙之处在于请求者可以指定它想要的信息并忽略其余信息,您可以利用这一点。 我假设运行更新方法,在大多数情况下您都必须将实体加载到内存中,为什么不在操作中返回它呢?