Tengo una clase CustomerDetails:
public record CustomerDetails{ public string? Code { get; init; } public string? Name { get; init; } public string? Notes { get; init; } }En el lado de GraphQL tengo lo siguiente:
En el lado de las consultas:
public class CustomerDetailsGraphType : AutoRegisteringObjectGraphType<CustomerDetails> { }Del lado de las mutaciones:
public class CustomerDetailsInputGraphType : AutoRegisteringInputObjectGraphType<CustomerDetails> {}Cuando ejecuto esto y trato de ver el esquema en Altair, me da un error de tipo:
"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..."no entiendo porque pasa eso?
Encontré la solución. En ambos casos, el nombre del objeto de tipo gráfico será automáticamente CustomerDetails. Esto no es correcto para el esquema GrapQL y no se puede generar. Entonces, ya sea en la consulta o en la mutación, debe especificar explícitamente un nombre diferente en el constructor de esta manera:
public class CustomerDetailsGraphType : AutoRegisteringObjectGraphType<CustomerDetails> { public CustomerDetailsGraphType() { Name = "CustomerDetailsGraphType"; // or any other name you consider } }