跳过并接受实体框架核心

时间:2016-06-07 15:30:57

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

我有简单的POCO课程:

public class Library
{
    [Key]
    public string LibraryId { get; set; }

    public string Name { get; set; }

    public List<Book> Books { get; set; }
}

public class Book
{
    [Key]
    public string BookId { get; set; }

    public string Name { get; set; }

    public string Text { get; set; }
}

我有查询,它返回已包含书籍的库:

dbContext.Set<Library>.Include(x => x.Books);

我试图跳过5个图书馆,然后选择10个图书馆:

await dbContext.Set<Library>.Include(x => x.Books).Skip(5).Take(10).ToListAsync();

问题是,当我尝试在此查询中执行SkipTake方法时,它会返回没有包含书籍列表的库。

如何保存以前包含的实体,SkipTake

1 个答案:

答案 0 :(得分:1)

通常,在使用SkipTake方法之前,您需要先排序。尝试按照这种方式按名称排序:

await dbContext.Set<Library>().Include(x => x.Books)
                              .OrderBy(x=>x.Name)
                              .Skip(5)
                              .Take(10)
                              .ToListAsync();

据我所知,您的查询应使用OFFSET-FETCH过滤器进行翻译,该过滤器需要ORDER BY子句存在。