我有以下实体Space,它的集合为SpaceMessage

public class Space
{
    public int Id { get; set; }

    [UsePaging(IncludeTotalCount = true, MaxPageSize = 50)]
    public ICollection<SpaceMessage> Messages { get; set; } = new HashSet<SpaceMessage>();
}

该查询定义为

    [UseFirstOrDefault]
    [UseProjection]
    [UseFiltering]
    public IQueryable<Space> GetSpace(ApplicationDbContext dbContext, int id)
    {
        return dbContext.Spaces.Where(e => e.Id == id);
    }

现在,我想使用分页来查询空间1的消息.

query {
    space(id: 1) {
        messages(first: 1) {
            edges {
                node {
                    id
                }
            }
        }
    }
}

,但返回空集合.

{
  "data": {
    "space": {
      "messages": {
        "edges": []
      }
    }
  }
}

这是因为SQL没有加入按摩表

info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Executed DbCommand (43ms) [Parameters=[@__id_0='?' (DbType = Int32)], CommandType='Text', CommandTimeout='30']
      SELECT 1
      FROM [Spaces] AS [s]
      WHERE [s].[Id] = @__id_0

如果有任何解决办法,我们将不胜感激.

推荐答案

目前导航属性不支持分页,HotChocket有the bug个属性支持分页

The only workaround用于定义解析器而不是导航属性:

public class Space
{
    [IsProjected]
    public int Id { get; set; }

    [UsePaging(IncludeTotalCount = true, MaxPageSize = 50)]
    public IQueryable<SpaceMessage> GetSpaceMessages(ApplicationDbContext dbContext)
    {
        return dbContext.SpaceMessages.Where(e => e.SpaceId == Id);
    }

}

Csharp相关问答推荐

将多个enum值传递给MAUI中的转换器参数的XML语法是什么?

在Microsoft XNA框架(MonoGame)中旋转相机

如何循环遍历XML文档 node 以使用XSLT存储值

如何在C#中删除一个特殊字符,如"使用Regex"

. NET WireMock拒绝PostAsJsonAsync序列化

迭代C#List并在数据库中 for each 元素执行SELECT语句—更有效的方式?

实体框架核心上是否支持使用NPGSQL的字符串聚合?

在FilePath中搜索一个词,并根据First Match从左到右提取文件路径

返回TyedResults.BadRequest<;字符串>;时问题详细信息不起作用

C#EF Core WHERE IN LINQ FROM LIST WITH.CONTAINS不返回任何内容

为什么我的表单在绑定到对象时提交空值?

C#-从基类更新子类

在实体框架中处理通用实体&S变更跟踪器

如何在NET 8最小API中自动记录TypedResults.Stream响应

在DoubleClick上交换DataGridViewImageColumn的图像和工具提示

WinUI 3中DoubleCollection崩溃应用程序类型的依赖属性

JsonPath在Newtonsoft.Json';S实现中的赋值

.NET8Blazor-为什么Rapzor渲染在for循环之后显示?

Xamarin.Forms项目中缺少MainPage.xaml

Windows 10上埃及标准时间的时区偏移不正确