У меня есть класс CustomerDetails:
public record CustomerDetails{
public string? Code { get; init; }
public string? Name { get; init; }
public string? Notes { get; init; }
}
На стороне GraphQL у меня есть следующее:
На стороне запросов:
public class CustomerDetailsGraphType : AutoRegisteringObjectGraphType<CustomerDetails> { }
Со стороны мутаций:
public class CustomerDetailsInputGraphType : AutoRegisteringInputObjectGraphType<CustomerDetails> {}
Когда я запускаю это и пытаюсь увидеть схему в Altair, я получаю ошибку типа:
"message": "GraphQL.Execution.UnhandledError: Error executing document.\r\n ---> System.InvalidOperationException: Unable to register GraphType 'MyProject.Customers.Mutations.ContactDetailsInputGraphType' with the name 'ContactDetails';\nthe name 'ContactDetails' is already registered to 'MyProject.Customers.Query.ContactDetailsGraphType'.\r\n..."
Я не понимаю, почему это происходит?





Я нашел решение. В обоих случаях имя объекта типа графика будет автоматически CustomerDetails. Это не подходит для схемы GrapQL и не может быть сгенерировано. Таким образом, либо в запросе, либо в мутации вы должны явно указать другое имя в конструкторе следующим образом:
public class CustomerDetailsGraphType : AutoRegisteringObjectGraphType<CustomerDetails>
{
public CustomerDetailsGraphType()
{
Name = "CustomerDetailsGraphType"; // or any other name you consider
}
}