.NET中GraphQL多Query类配置后无Schema显示问题排查
问题原因解析
核心问题:代码存在语法错误
你的PostQuery类里的GetUserPosts方法有语法错误:
[UseFiltering] [UseSorting] public async Task<List<Post>> GetUserPosts(int userId) { return _=await _postResolver.GetUserPosts(userId); }
这里的return _=await ...是无效写法,正确的返回逻辑应该是直接返回异步调用结果:
return await _postResolver.GetUserPosts(userId);
HotChocolate在构建GraphQL Schema时,会严格校验所有关联的代码逻辑,存在编译级语法错误时,Schema生成会直接失败,导致页面显示"NO SCHEMA"。当你移除其中一个查询类后,剩下的类没有语法问题,所以Schema能正常生成。
补充说明:Query类型扩展的配置合理性
你在Program.cs里的配置AddQueryType(q=>q.Name("Query")).AddType<UserQuery>().AddType<PostQuery>()本身是可行的——因为UserQuery和PostQuery都标记了[ExtendObjectType("Query")],会自动扩展根Query类型。只要修复语法错误,这个配置就能正常工作。
内容的提问来源于stack exchange,提问作者Mohamed Ali
相关产品推荐
相关产品推荐

