C# 使用热巧克力GraphQL在Dapper中延迟加载数据
我在C后端将GraphQL与热巧克力库一起使用时遇到问题。当我使用过滤时,整个表被加载,然后被过滤。这当然意味着一个糟糕的性能,因为每次都要执行完整的表扫描 这就是问题所在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
[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国家/地区
{
...
}