首页 > 解决方案 > 如何使用 ThenInclude 查询 EntityFramework.Core 3.0 DbContext

问题描述

我一定错过了一些简单的东西。我创建了一个项目来保存数据模型。我添加了以下软件包:

我在包管理器控制台中使用以下命令创建了模型:

Scaffold-DbContext "server=MyServer;database=MyDB;Integrated Security=False;User ID=MyUserId;Password=myPassword;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

现在我有一个名为 MyDBContext 的上下文。但是,我似乎没有编写我期望的 LINQ 查询所需的方法。我希望能够写出这样的东西:

var pt = context.Patient.Where(p => p.PatientId == 1234)
                        .Include(pa => pa.PatientAddress)
                        .ThenInclude(....)

ThenInclude 不可用。我错过了什么?

在旁注中,我期待 DbSet 是复数的。为什么这没有发生?

标签: c#entity-framework-core

解决方案


编辑

首先你必须在你的类中包含扩展:

using Microsoft.EntityFrameworkCore;

原始答案

它存在,但是:

代码完成仍然没有在 ThenInclude 中提供属性。例如,作者不是文档示例中的选项:

var blogs = context.Blogs
       .Include(blog => blog.Posts)
           .ThenInclude(post => post.Author)
       .ToList();

手动输入时,编译时没有错误或下划线并正确运行。

https://github.com/dotnet/roslyn/issues/8237#issuecomment-562997436


推荐阅读