2

在这里我有一个突变,如您所见,当我从图形执行此突变时,参数名称是大写 P 的 Product ,字段名称是大写 C 的 CreateProduct 我必须在骆驼外壳上写下字段的名称以及名称关于参数,有没有办法配置 graphql-dotnet 以尊重代码中写入的名称?

 const string STR_Product = "Product";
    public Mutations(IProductService ProductService)
    {
        Name = "Mutation";
        Field<ProductType>(
            "CreateProduct",
            arguments: new QueryArguments(
                new QueryArgument<NonNullGraphType<ProductInputType>> { Name = STR_Product }),
            resolve: context =>
            {
                var ProductInput = context.GetArgument<ProductInput>(STR_Product);
                return ProductService.CreateAsync(ProductInput.Code, ProductInput.Name, ProductInput.Description);
                //return new ProductInputType();
            }
        );


    }
}
4

2 回答 2

1

您可以将 a 传递IFieldNameConverterExecutionOptions. 它默认使用CamelCaseFieldNameConverter.

Introspection 类型需要一些特殊的考虑,因为根据 GraphQL 规范,这些都是驼峰式的。

GraphQL.NET 提供CamelCaseFieldNameConverterPascalCaseFieldNameConverterDefaultFieldNameConverter. 你也可以自己写。 来源在这里找到

using System;
using GraphQL;
using GraphQL.Types;

public class Program
{
  public static void Main(string[] args)
  {
    var schema = Schema.For(@"
      type Query {
        Hello: String
      }
    ");

    var json = schema.Execute(_ =>
    {
      _.Query = "{ Hello }";
      _.Root = new { Hello = "Hello World!" };
      _.FieldNameConverter = new DefaultFieldNameConverter();
    });

    Console.WriteLine(json);
  }
}
于 2019-04-25T18:46:07.953 回答
1

请参阅 Joe McBride 的上述答案,但应该使用“NameConverter”而不是“FieldNameConverter”。例子:

var json = schema.Execute(_ =>
    {
      _.NameConverter = new DefaultNameConverter(); //or PascalNameConverter, etc.
    });

(作为答案发布,因为我无法发表评论)

于 2021-01-19T00:08:13.700 回答