【问题标题】:Filter EF Core Navigation property on GraphQL HotChocolate过滤 GraphQL HotChocolate 上的 EF Core Navigation 属性
【发布时间】:2021-04-23 15:11:19
【问题描述】:

我正在使用带有 EF Core 的 HotChocolate (11.2.2) 并且想要过滤子属性。根据 GraphQL 文档,这应该可以通过在导航属性上使用 filter 关键字来实现,但 HotChocolate 只是失败了。

我的架构:

type A {
    Name: string,
    RefTo: [B]
}
type B {
    TypeName: string,
    Value: int
}

这得到了 EF 的支持,我向 HotChocolate 提供了一个IQueryable<A>

    [UsePaging]
    [UseProjection]
    [UseFiltering]
    [UseSorting]
    public IQueryable<A> GetAs([Service] Context db) => db.As.AsSingleQuery().AsNoTrackingWithIdentityResolution();

现在我想只包含那些TypeName 等于"ExampleType"Bs,如下所示:

query {
   As {
      Name,
      RefTo(where: { TypeName: { eq: "ExampleType" } })
      {
          TypeName,
          Value
      }
   }
}

但 HotChcolate 似乎不明白这一点,并说:

字段“A.RefTo”.validation 上的未知参数“where”

是否可以使用 EF Core 模型过滤导航属性?

【问题讨论】:

    标签: c# graphql entity-framework-core hotchocolate


    【解决方案1】:

    您还必须向 RefTo 添加过滤

        [UseFiltering] 
        public ICollection<A> RefTo {get; set;}
    

    【讨论】:

    • 成功了。有没有一种好方法可以通过配置将此属性应用于我的实体的所有属性?我不想遍历 300 多个具有所有属性的实体并手动完成^^
    • @Venson 我们实现了一个模式 TypeInterceptor github.com/ChilliCream/hotchocolate/blob/… 来检查是否有任何集合,然后添加了 UseFiltering 和 UseSorting
    猜你喜欢
    • 2021-11-25
    • 2020-12-09
    • 2023-01-03
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    • 2019-06-21
    • 1970-01-01
    相关资源
    最近更新 更多