1

我有一个非常简单的 setyp,我将 graphql 放在实体框架数据上下文(sql server)上。

我试图让过滤工作。我试过将 .UseFiltering() 添加到这样的字段描述符中......

descriptor.Field(t => t.AccountName).Type<NonNullType<StringType>>().UseFiltering();

但它会在启动时导致此错误...

HotChocolate.SchemaException:“无法从类型引用中推断或解析模式类型Input: System.Char。”

我假设我在某个地方做错了什么......

4

1 回答 1

3

“UseFiltering”应该用于过滤以某种方式(IQueryable、IEnumerable 等)表示项目集合的数据。例如,如果您有 users 集合并且每个用户都有 AccountName 属性,您可以按 AccountName 过滤该集合:

[ExtendObjectType(Name = "Query")]
public class UserQuery
{
    [UseFiltering]
    public async Task<IEnumerable<User>> GetUsers([Service]usersRepo)
    {
       IQueryable<User> users = usersRepo.GetUsersQueryable();
    }
}

在该示例中,过滤的 HotChocolate 实现将按用户字段生成许多过滤器,您可以通过以下方式使用它们:

users(where: {AND: [{accountName_starts_with: "Tech"}, {accountName_not_ends_with: "Test"}]})

根据您的示例:系统认为 AccountName 是一个集合,因此尝试在 AccountName 所包含的字符之间建立过滤。

于 2020-07-20T04:15:22.667 回答