首页 > 其他分享 >EF Core中数据的预先加载

EF Core中数据的预先加载

时间:2024-03-27 21:34:37浏览次数:20  
标签:Core EF Posts blog context var post Include 加载

预先加载
可以使用 Include 方法来指定要包含在查询结果中的关联数据

using (var context = new BloggingContext())
{
var blogs = context.Blogs
.Include(blog => blog.Posts)
.ToList();
}

 

可以在单个查询中包含多个关系的关联数据。

C# using (var context = new BloggingContext())
{
    var blogs = context.Blogs
        .Include(blog => blog.Posts)
        .Include(blog => blog.Owner)
        .ToList();
}

包含多个层级
使用 ThenInclude 方法可以依循关系包含多个层级的关联数据。 以下示例加载了所有博客、其相关文章及每篇文章的作者。

C#

复制
using (var context = new BloggingContext())
{
var blogs = context.Blogs
.Include(blog => blog.Posts)
.ThenInclude(post => post.Author)
.ToList();
}

 

可以将对来自多个级别和多个根的关联数据的所有调用合并到同一查询中。

C#

复制
using (var context = new BloggingContext())
{
var blogs = context.Blogs
.Include(blog => blog.Posts)
.ThenInclude(post => post.Author)
.ThenInclude(author => author.Photo)
.Include(blog => blog.Owner)
.ThenInclude(owner => owner.Photo)
.ToList();
}

 

经过筛选的包含

在应用包含功能来加载相关数据时,可对已包含的集合导航应用某些可枚举的操作,这样就可对结果进行筛选和排序。

支持的操作包括:WhereOrderByOrderByDescendingThenByThenByDescendingSkip 和 Take

应对传递到 Include 方法的 Lambda 中的集合导航应用这类操作,如下例所示:

C#
using (var context = new BloggingContext())
{
    var filteredBlogs = context.Blogs
        .Include(
            blog => blog.Posts
                .Where(post => post.BlogId == 1)
                .OrderByDescending(post => post.Title)
                .Take(5))
        .ToList();
}

只能对每个包含的导航执行一组唯一的筛选器操作。 如果为某个给定的集合导航应用了多个包含操作(下例中为 blog.Posts),则只能对其中一个导航指定筛选器操作:

C#
using (var context = new BloggingContext())
{
    var filteredBlogs = context.Blogs
        .Include(blog => blog.Posts.Where(post => post.BlogId == 1))
        .ThenInclude(post => post.Author)
        .Include(blog => blog.Posts)
        .ThenInclude(post => post.Tags.OrderBy(postTag => postTag.TagId).Skip(3))
        .ToList();
}
 

标签:Core,EF,Posts,blog,context,var,post,Include,加载
From: https://www.cnblogs.com/zy8899/p/18100285

相关文章

  • Codeforces Round 936 (Div. 2)
    Preface懒狗闪总开完组会不打CF直接滚去睡觉了可海星,感觉我好像退化成我们队训练最少的人了赛后补了下发现这场题竟然都会做,不过F不知道是我实现有问题常数大得一批加了读优才惊险卡过A.MedianofanArray签到,找到中位数后面与它相同的数的个数即可#include<cstdio>#incl......
  • 就是这么简单,Selenium StaleElementReferenceException 异常分析与解决
    简介Selenium是一个流行的自动化测试工具,用于模拟用户与网页交互。然而,当我们在使用Selenium时,可能会遇到一个常见的异常,即StaleElementReferenceException。这个异常通常在我们尝试与网页上的元素交互时抛出,可能会导致我们的自动化测试脚本运行失败。本文将深入探讨StaleE......
  • yolov8添加EffectiveSE 注意力模块
    ######################BiFPN####################################BiFPN#两个特征图add操作classBiFPN_Add2(nn.Module):def__init__(self,c1,c2):super(BiFPN_Add2,self).__init__()self.w=nn.Parameter(torch.ones(2,dtype=torch.f......
  • linq的延迟加载
    下面两端代码执行结果为何不同list.Select(x=>{x.FieldA=100;returnx;});list.ForEach(x=>{Console.WriteLine(x.FieldA);});list.Select(x=>{x.FieldA=100;returnx;}).ToList();list.ForEach(x=>{Console.WriteLine(x.FieldA);});我明白你的疑惑......
  • 求助,路过的大佬帮忙看一下!!!!elment中input组件使用prefix-icon="el-icon-search"不加载
    背景:创建了一个简单的vue工程想用测试一下el-input组件的功能,没有显示图标。代码如下所示<template><el-inputv-model="value"placeholder="请输入内容":disabled="false":show-password="true":clearable="true"prefix......
  • .net6 core web项目发布部署到IIS,以Windows服务的形式部署启动,报错1053,报1067错误解
    安装NuGet包Microsoft.Extensions.Hosting.WindowsServices  varbuilder=WebApplication.CreateBuilder(newWebApplicationOptions{ContentRootPath=AppContext.BaseDirectory,Args=args});//Addservicestothecontainer.builder.Services.Add......
  • Codeforces Round 915 (Div. 2) D
    CyclicMEX题面翻译对于一个长为\(n\)的排列\(p\),定义其权值为\(\sum_{i=1}^n\operatorname{mex}_{j=1}^ip_j\),也就是\(p_1\simp_i\)中没有出现过的最小自然数的和。然后你可以对这个排列进行移位操作,问最大权值。题目描述Foranarray$a$,defineitscostas$......
  • ComplateFeature基本使用
    combine合并featureimportcn.hutool.http.HttpUtil;importentity.EssBptPrice;importentity.Student;importjava.util.ArrayList;importjava.util.List;importjava.util.concurrent.CompletableFuture;importjava.util.concurrent.ExecutionException;publi......
  • default_statistics_target参数对PG和MogDB性能影响测试和分析
    default_statistics_target参数对PG和MogDB性能影响测试和分析本文出处:https://www.modb.pro/db/230160前段时间在某客户生产环境优化PG查询性能时发现一个很有意思的现象,一个统计信息相关参数可以很大程度上影响SQL的性能。近期在学习MogDB,就对比PG和MogDB做了个......
  • 关于AWS-EFS-跨VPC及跨账号-客户端的挂载方法-注意事项
    关于EFS客户端挂载EFS的方式,可以参考笔者的另一篇文件《使用EFS客户端帮助程序-对AWS-EFS-访问点-Access-points-的挂载》但这是对于同一个VPC中EC2,可以直接简单的使用那样的方式进行挂载如果是不同的VPC之间或者跨账号,应该如何挂载呢?当然这里假定网络的连接都已经打通首先,我们......