复杂类型的 HotChocolate (GraphQL) 模式优先方法

HotChocolate (GraphQL) schema first approach on complex type

我是 HotChocolate 的新手,我正在尝试 PoC 一些简单的用法。 我创建了非常简单的 .graphql 文件:

#camera.graphql

type Camera {
    id: ID!
    name: String!
}

type Query {
    getCamera: Camera!
}

还有一个非常简单的相机包装 .NET 代码:

    public class QlCamera
    {
        public static QlCamera New()
        {
            return new QlCamera
            {
                Id = Guid.NewGuid().ToString(),
                Name = Guid.NewGuid().ToString()
            };
        }

        public string Id { get; set; }
        public string Name { get; set; }
    }

以及用于架构创建的此类内容:

   public void CreateSchema()
   {
        string path = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

        var smBuilder = SchemaBuilder.New();
        smBuilder.AddDocumentFromFile(path + "/GraphQL/camera.graphql");

        smBuilder.AddResolver("Query", "getCamera", () => QlCamera.New());

        var schema = smBuilder.Create();
   }

但是在最后一行我得到了一个例外: HotChocolate.SchemaException: '发生多个模式错误: 字段 Camera.id 没有解析器。 - 类型:相机 字段 Camera.name 没有解析器。 - 类型:相机 '

我尝试创建:

    public class QlCameraType : ObjectType<QlCamera>
    {
        protected override void Configure(IObjectTypeDescriptor<QlCamera> descriptor)
        {
            descriptor.Name("Camera");

            descriptor.Field(t => t.Id).Type<NonNullType<StringType>>();
            descriptor.Field(t => t.Name).Type<StringType>();
        }
    }

并替换

smBuilder.AddResolver("Query", "getCamera", () => QlCamera.New());

smBuilder.AddResolver("Query", "getCamera", () => new QlCameraType());

但我仍然遇到同样的异常。

显然我在这里错过了什么,但我不明白到底是什么。 有人可以解释一下我错过了什么吗?

(我已经通过了几次文档,但我在那里找不到相关的帮助)

如例外情况明确指出 - "Camera" type/object.

的特定字段("id" 和 "name")没有绑定左轮手枪

所以他们只需要加上:

smBuilder.AddResolver("Camera", "id", rc => rc.Parent<QlCamera>().Id);
smBuilder.AddResolver("Camera", "name", rc => rc.Parent<QlCamera>().Name);

就是这样。