I have graphql.net implementation using conventions

I have my model defined as below.

public partial class Project
        public Project()
            ProjectGroup = new HashSet<ProjectGroup>();
            ProjectUser = new HashSet<ProjectUser>();
            Datasource = new HashSet<Datasource>();

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

        public virtual ICollection<ProjectGroup> ProjectGroup { get; set; }
        public virtual ICollection<ProjectUser> ProjectUser { get; set; }
        public virtual ICollection<Datasource> Datasource { get; set; }

I am trying to update only name of above class. using above class (which is basically kind of entity framework class, but that is irrelevant of this question)

So I have defined mutation as below.

public sealed class Mutation
        public async Task<Project> SaveProject([Inject] IProjectRepository projectRepository, projectModels.Master.Project project)
            return Mapper.Map<Project>(await projectRepository.SaveProject(project));

and I am calling this mutation as below.

                .post('https://localhost:44375/api/Graph', {
                    query: `mutation ($project: Project) {   
                                    saveProject(project: $project) {
                    variables: {
                        'project': { 'name' : data.label },

In response I am getting below error.

{"errors":[{"message":"Variable \"project\" cannot be non-input type \"Project\".","locations":[{"line":1,"column":11}],"extensions":{"code":"VALIDATION_ERROR"}}]}

what am I doing wrong?

1 Answers

Anonymous Creator On Best Solutions

From graphql.net convention's official repo, I found one example and there was one attribute used for input type. After use of that it is working.


So it requires attribute something in a following way.

    public class UpdateMovieTitleParams
        public Guid Id { get; set; }

        public string NewTitle { get; set; }