You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让HotChocolate为对象类型添加@key指令?

HotChocolate Apollo Federation 未生成@key指令问题解决

问题:已为Parent类的Id属性添加[Key]和[ID]特性,配置Apollo Federation后,生成的GraphQL Schema未包含@key(fields: "id")指令。

错误原因

你将[Key]特性应用在了属性级别,但HotChocolate的Apollo Federation中,@key指令需要通过类级别的[Key]特性来配置,需明确指定构成key的字段。属性上的[Key]特性用于其他场景(如实体主键标识),并不对应Federation的@key指令。

修正方案

修改Parent类,在类级别添加[Key(fields: "id")]特性,属性上仅保留[ID]特性即可:

using HotChocolate.ApolloFederation;

[Key(fields: "id")]
public class Parent
{
    public Parent(string id, string name)
    {
        Id = id;
        Name = name;
    }

    [ID]
    public string Id { get; }

    public string Name { get; }

    [ReferenceResolver]
    public static Parent? Get(ParentRepository repository, string id)
    {
        return repository.GetParent(id);
    }
}

验证结果

修改后生成的GraphQL Schema将符合预期:

type Parent @key(fields: "id") {
  id: ID!
  name: String!
}

你的启动代码和包版本配置无需调整,保持现有设置即可。

内容的提问来源于stack exchange,提问作者RQDQ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 12:53:09