c# - Entity Framework Core 急切加载然后包含在集合中

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

我想在执行查询时包含三个模型。

这是场景。

public class Sale
{
     public int Id { get; set; }
     public List<SaleNote> SaleNotes { get; set; }
}

public class SaleNote
{
    public int Id { get; set; }
    public User User { get; set; }
}

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

我可以像这样急切加载 SaleNotes...

_dbContext.Sale.Include(s => s.SaleNotes);

但是,尝试使用 ThenInclude 从 SaleNote 中预先加载 User 模型具有挑战性,因为它是一个集合。我找不到任何关于如何急切加载这个场景的例子。有人可以提供以下 ThenInclude 中的代码来为集合中的每个项目加载用户。

_dbContext.Sale.Include(s => s.SaleNotes).ThenInclude(...);

最佳答案

SaleNotes 是集合导航属性并不重要。它对于引用和集合应该是一样的:

_dbContext.Sale.Include(s => s.SaleNotes).ThenInclude(sn=>sn.User);

但据我所知,EF7 还支持使用 Select 扩展方法的旧的多级包含语法:

_dbContext.Sale.Include(s => s.SaleNotes.Select(sn=>sn.User));

关于c# - Entity Framework Core 急切加载然后包含在集合中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38044451/

相关文章:

c# - Asp.net Core 1.0 project.json 预发布脚本

c# - 引用 Microsoft.Build 和 System.IO.Compression 时出现 MissingMethodException

mysql - EF6+MySQL - 在单个 SaveChanges 中插入 2 个相关对象时出错

c# - 为什么我不能通过 Entity Framework 覆盖某个字段?

c# - 如何定义两个实体之间的多重关系?

c# - 文件上传 - 返回 null

C# 以编程方式恢复 NuGet 包

c# - 使用 Entity Framework 将 asp.net Identity 实现到现有数据库中

asp.net-core - EF7 中导航属性的更新未保存

c# - 如何防止在单元测试中自动包含导航属性