EF Core Second level ThenInclude missworks

时间:2017-08-13 08:16:47

标签: entity-framework include .net-core entity-framework-core

假设首先使用这些模型:

Method有一个OriginalCode OriginalCode MutantMutant ParseSubTree有许多Method s

现在查询Method targetMethod = dBContext.Methods .Include(me => me.OriginalCode) .ThenInclude(oc => oc.Mutants) .FirstOrDefault(me => me.Id == id); 时我希望另一个被加载。所以我有以下内容:

ParseSubTree

,下一步是另外加入urlpatterns = [ url(r'^nojs/$', views.nojs), url(r'^blog/all/$', views.allTitles), url(r'^post/(?P<id>[\d+]+)/(?P<title>[\w+]+)/$', views.viewArticle) ] 。但问题是我无法访问它。请参见以下图像:

mu is a list except object reference

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

我的错误在哪里!

TG

2 个答案:

答案 0 :(得分:31)

这是一个已知的Intellisense问题,集合类型导航属性的ThenInclude重载,由Completion missing members of lambda parameter in fault tolerance case #8237 Roslyn GitHub问题跟踪。

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

.ThenInclude(mu => mu.ParseSubTrees) 

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

  

注意

     

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

答案 1 :(得分:2)

就我而言,名称空间System.Data.Entity和Microsoft.EntityFrameworkCore之间存在冲突。只需删除第一条使用行。