EF Core Second level ThenInclude missworks

Con*_*ver 18 entity-framework include entity-framework-core .net-core

假设首先使用这些模型:

Method有一个OriginalCode OriginalCode有很多Mutants Mutant有很多ParseSubTrees的

现在在查询时Method我希望另一个被加载.所以我有以下内容:

Method targetMethod = dBContext.Methods
            .Include(me => me.OriginalCode)
                .ThenInclude(oc => oc.Mutants)
            .FirstOrDefault(me => me.Id == id);
Run Code Online (Sandbox Code Playgroud)

并且下一步是另外包括ParseSubTree.但问题是我无法访问它.请参见以下图像:

mu是除对象引用之外的列表

问题是"mu是列表而不是对象引用"!

我的错误在哪里!

TG.

Iva*_*oev 34

这是一个已知的Intellisense问题,具有ThenInclude集合类型导航属性的重载,由容错案例#8237 Roslyn GitHub问题中的完成缺少lambda参数成员跟踪.

在修复之前,只需键入属性的名称,它就会成功编译并按预期工作.

.ThenInclude(mu => mu.ParseSubTrees) 
Run Code Online (Sandbox Code Playgroud)

更新:现在甚至在EF Core文档的Including multiple levels 部分中特别提到:

注意

当前版本的Visual Studio提供了错误的代码完成选项,并且ThenInclude在集合导航属性之后使用该方法时,可能会导致正确的表达式被标记为语法错误.这是在https://github.com/dotnet/roslyn/issues/8237上跟踪的IntelliSense错误的症状.只要代码正确并且可以成功编译,就可以安全地忽略这些伪造的语法错误.

  • @WoIIe*里程碑:**积压***.这意味着甚至没有安排修复:-( (2认同)