У меня возникла проблема с использованием GraphQL с библиотекой HotChocolate в серверной части C#. Когда я использую фильтрацию, загружается вся таблица, а затем она фильтруется. Это, конечно, означает ужасную производительность, поскольку каждый раз выполняется полное сканирование таблицы.
Это запрос
Код: Выделить всё
[UseFiltering]
public IQueryable
GetFilteredPersons(
[Service] IPersonRepo repo)
{
return repo.GetAll().AsQueryable();
}
А это репозиторий
Код: Выделить всё
public IEnumerable
GetAll()
{
var query = "SELECT * FROM Persons";
var param = new DynamicParameters();
return SqlMapper.Query(GetConnection()
query, param,
commandType: CommandType.Text);
}
Как передать фильтры в предложение WHERE? Может быть, с помощью DapperExtensions, использующего предикат? В любом случае это будет сложно, поскольку фильтры в запросе GraphQL на самом деле недоступны.
Подробнее здесь:
https://stackoverflow.com/questions/672 ... te-graphql