Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 然后在EF核心查询中不识别包含_C#_Entity Framework_Linq_Entity Framework Core - Fatal编程技术网

C# 然后在EF核心查询中不识别包含

C# 然后在EF核心查询中不识别包含,c#,entity-framework,linq,entity-framework-core,C#,Entity Framework,Linq,Entity Framework Core,我的IQueryable如下所示: IQueryable<TEntity> query = context.Set<TEntity>(); query = query.Include("Car").ThenInclude("Model"); 为什么它不承认这一点 查询: [Content.Data.Models.Article]).Where(x => (((x.BaseContentItem.SiteId == value(Content.Business.M

我的IQueryable如下所示:

 IQueryable<TEntity> query = context.Set<TEntity>();
query = query.Include("Car").ThenInclude("Model");
为什么它不承认这一点

查询:

[Content.Data.Models.Article]).Where(x => (((x.BaseContentItem.SiteId == value(Content.Business.Managers.ArticleManager+<>c__DisplayClass8_0).id) AndAlso x.BaseContentItem.IsActive) AndAlso x.BaseContentItem.IsLive)).Include("BaseContentItem").Include("BaseContentItem.TopicTag").Include("MainImage")}

thenclude
仅在使用
Include
重载和lambda表达式参数时可用:

query = query.Include(e => e.Car).ThenInclude(e => e.Model);
使用带字符串参数的
Include
重载时,不需要
thenclude
,因为可以在传递的字符串中指定整个属性路径:

query = query.Include("Car.Model");

您的问题可能是缺少对Microsoft.EntityFrameworkCore.Relational的引用

这可以通过包管理器添加


还要确保您使用的是Microsoft.EntityFrameworkCore命名空间中的.include,而不是其他命名空间中的.include。include(没有.thenclude)

EF Core是否有方法
。include(string)
。thenclude(string)
?它不应该是
query=query.Include(e=>e.Car),然后是Include(e=>e.Model)?可能与@DavidG重复。或者只是
包含(点分隔的字符串)
。但是OP声称它不起作用,而且我不记得从引入重载(如果我没记错的话,是1.1.0)时起,在点分隔属性名
Include
方面出现过问题。@IvanStoev啊,是的,这是可能的。我从来都不喜欢基于字符串的版本,因为它们缺少编译时类型检查。编辑之后,就不清楚你在问什么了。这对我来说很有效。考虑发布一个RePro(并指定EF核心版本-V2.0中的我的测试),我在这里打开了一个新的问题。最后您所写的内容让我认为堆栈溢出异常可能不是由
Include
方法(正如我在测试中所说的那样)引起的,而是由AutoMapper when
BaseContentItem.T引起的‌​opicTag
有效(可能是
TopicTag
循环引用了
BaseContentItem
,这导致映射代码中出现无限循环)。您能否验证查询是否可以执行并具体化为列表,而不调用
Map
?请将其重新表述为一个有条件的答案,如“您的问题可能是…,在这种情况下,解决方案是…”。目前的措辞有可能被误认为是澄清问题(应该在评论中)。
query = query.Include(e => e.Car).ThenInclude(e => e.Model);
query = query.Include("Car.Model");