Yur*_* N. 6 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; }
}
Run Code Online (Sandbox Code Playgroud)
我有查询,返回包含已包含书籍的图书馆:
dbContext.Set<Library>.Include(x => x.Books);
Run Code Online (Sandbox Code Playgroud)
我试图跳过 5 个库,然后选择其中的 10 个:
await dbContext.Set<Library>.Include(x => x.Books).Skip(5).Take(10).ToListAsync();
Run Code Online (Sandbox Code Playgroud)
问题是,当我尝试在此查询上执行Skip和Take方法时,它返回没有包含书籍列表的图书馆。
如何使用Skip和Take保存以前包含的实体?
oct*_*ccl 14
确保遵循OrderBy, Skip,的顺序Take。Skip通常在使用和方法之前需要先排序Take。(即使只是更改 Take 和 Skip 的顺序也会影响结果)尝试按名称排序,如下所示:
await dbContext.Set<Library>().Include(x => x.Books)
.OrderBy(x=>x.Name)
.Skip(5)
.Take(10)
.ToListAsync();
Run Code Online (Sandbox Code Playgroud)
据我记得您的查询应该使用 OFFSET-FETCH需要ORDER BY存在子句的过滤器进行翻译。