C# 然后在EF核心查询中不识别包含
我的IQueryable如下所示: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<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 whenBaseContentItem.T引起的opicTag
有效(可能是TopicTag
循环引用了BaseContentItem
,这导致映射代码中出现无限循环)。您能否验证查询是否可以执行并具体化为列表,而不调用Map
?请将其重新表述为一个有条件的答案,如“您的问题可能是…,在这种情况下,解决方案是…”。目前的措辞有可能被误认为是澄清问题(应该在评论中)。
query = query.Include(e => e.Car).ThenInclude(e => e.Model);
query = query.Include("Car.Model");