预先加载的使用:
关联两张表查询
using (var context = new BloggingContext()) {var blogs = context.Blogs.Include(blog => blog.Posts).Include(blog => blog.Owner).ToList(); }
查询多层级关联
using (var context = new BloggingContext()) {var blogs = context.Blogs.Include(blog => blog.Posts).ThenInclude(post => post.Author).ThenInclude(author => author.Photo).ToList(); }
显示加载的使用: DbContext.Entry(...)
API 显式加载导航属性。
显示加载导航属性
using (var context = new BloggingContext()) {var blog = await context.Blogs.SingleAsync(b => b.BlogId == 1);await context.Entry(blog).Collection(b => b.Posts).LoadAsync();await context.Entry(blog).Reference(b => b.Owner).LoadAsync(); }
显示查询多层级关联
using (var context = new BloggingContext()) {var blog = await context.Blogs.SingleAsync(b => b.BlogId == 1);
await context.Entry(blog).Collection(b => b.Posts)
.Query()
.Include(r => r.Books)
.LoadAsync()
}
显示查询关联实体
using (var context = new BloggingContext()) {var blog = await context.Blogs.SingleAsync(b => b.BlogId == 1);var postCount = await context.Entry(blog).Collection(b => b.Posts).Query().CountAsync(); }
筛选要加载到内存中的关联实体
using (var context = new BloggingContext()) {var blog = await context.Blogs.SingleAsync(b => b.BlogId == 1);var goodPosts = await context.Entry(blog).Collection(b => b.Posts).Query().Where(p => p.Rating > 3).ToListAsync(); }