如何让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
相关产品推荐
相关产品推荐

