C# 使用热巧克力GraphQL在Dapper中延迟加载数据

C# 使用热巧克力GraphQL在Dapper中延迟加载数据,c#,sql,performance,graphql,hotchocolate,C#,Sql,Performance,Graphql,Hotchocolate,我在C后端将GraphQL与热巧克力库一起使用时遇到问题。当我使用过滤时,整个表被加载,然后被过滤。这当然意味着一个糟糕的性能,因为每次都要执行完整的表扫描 这就是问题所在 [UseFiltering] public IQueryable<Person> GetFilteredPersons( [Service] IPersonRepo repo) { return repo.GetAll

我在C后端将GraphQL与热巧克力库一起使用时遇到问题。当我使用过滤时,整个表被加载,然后被过滤。这当然意味着一个糟糕的性能,因为每次都要执行完整的表扫描

这就是问题所在

        [UseFiltering]
        public IQueryable<Person> GetFilteredPersons(
            [Service] IPersonRepo repo)
        {
            return repo.GetAll().AsQueryable();
        }
这就是回购协议

        public IEnumerable<Person> GetAll()
        {
            var query = "SELECT * FROM Persons";
            var param = new DynamicParameters();
            return SqlMapper.Query<Person>(GetConnection()
                query, param,
                commandType: CommandType.Text);
        }
如何将筛选器传递到WHERE子句?可能是使用谓词的DapperExtensions?无论如何这都很难,因为在GraphQL查询中无法真正访问筛选器。

您可以使用它来接收解析器方法上的参数。它允许复杂对象并根据需要标记参数,这增加了很多灵活性

图ql:

{
  person(country: String!) {
     ...
  }
}

C:

公共IEnumerable GetAllstring国家/地区 { ... }