HotChocolate 突变输入类型使用 int 而不是 ID
HotChocolate mutation input type uses int instead of ID
我是 HotChocolate 和 GraphQL 的新手,我正在努力掌握启用节点 and/or 对我的 GraphQL API 的中继支持。目前使用 HotChocolate v12.
上下文
我正在尝试创建一个更新实体的突变(在此示例中为 Client)。我在这里使用代码优先方法并具有以下内容:
- 一个输入record/class定义如下:
public record UpdateClientInput([ID(nameof(Client))] int Id, string Code, string Name, string Subdomain);
- returns有效负载class的突变函数:
[UseAppDbContext]
public async Task<UpdateClientPayload> UpdateClientAsync(UpdateClientInput input, [ScopedService] AppDbContext context)
{
var client = await context.Set<Client>().FirstOrDefaultAsync(x => x.Id == input.Id);
// cut for brevity
return new UpdateClientPayload(client);
}
- 我通过在服务配置中添加以下内容启用了对节点的支持:
builder.Services
.AddGraphQLServer()
.AddQueryType(d => d.Name("Query"))
.AddMutationType(d => d.Name("Mutation"))
// removed others for brevity
.AddGlobalObjectIdentification()
.AddQueryFieldToMutationPayloads();
但是当我使用 Banana Cake Pop 浏览 API 时,架构定义中的 UpdateClientInput 对象仍然使用 int 而不是 ID !(见下面的截图)。所以我正在使用的 GraphQL 客户端 (Strawberry Shake) 生成了不使用 ID! 类型的输入对象。我在这里遗漏了什么吗?
所以为了解决这个问题,这实际上是 HotChocolate v12 的一个变化,记录应该使用 [属性: ID] 而不是 [ID] 属性。可以在此处找到更改 https://chillicream.com/docs/hotchocolate/api-reference/migrate-from-11-to-12#records。
我所做的是将记录声明更改为:
public record UpdateClientInput([ID(nameof(Client))] int Id, string Code, string Name, string Subdomain);
到
public record UpdateClientInput([property: ID] int Id, string Code, string Name, string Subdomain);
将此输入对象生成为:
我是 HotChocolate 和 GraphQL 的新手,我正在努力掌握启用节点 and/or 对我的 GraphQL API 的中继支持。目前使用 HotChocolate v12.
上下文 我正在尝试创建一个更新实体的突变(在此示例中为 Client)。我在这里使用代码优先方法并具有以下内容:
- 一个输入record/class定义如下:
public record UpdateClientInput([ID(nameof(Client))] int Id, string Code, string Name, string Subdomain);
- returns有效负载class的突变函数:
[UseAppDbContext]
public async Task<UpdateClientPayload> UpdateClientAsync(UpdateClientInput input, [ScopedService] AppDbContext context)
{
var client = await context.Set<Client>().FirstOrDefaultAsync(x => x.Id == input.Id);
// cut for brevity
return new UpdateClientPayload(client);
}
- 我通过在服务配置中添加以下内容启用了对节点的支持:
builder.Services
.AddGraphQLServer()
.AddQueryType(d => d.Name("Query"))
.AddMutationType(d => d.Name("Mutation"))
// removed others for brevity
.AddGlobalObjectIdentification()
.AddQueryFieldToMutationPayloads();
但是当我使用 Banana Cake Pop 浏览 API 时,架构定义中的 UpdateClientInput 对象仍然使用 int 而不是 ID !(见下面的截图)。所以我正在使用的 GraphQL 客户端 (Strawberry Shake) 生成了不使用 ID! 类型的输入对象。我在这里遗漏了什么吗?
所以为了解决这个问题,这实际上是 HotChocolate v12 的一个变化,记录应该使用 [属性: ID] 而不是 [ID] 属性。可以在此处找到更改 https://chillicream.com/docs/hotchocolate/api-reference/migrate-from-11-to-12#records。
我所做的是将记录声明更改为:
public record UpdateClientInput([ID(nameof(Client))] int Id, string Code, string Name, string Subdomain);
到
public record UpdateClientInput([property: ID] int Id, string Code, string Name, string Subdomain);
将此输入对象生成为: