. include()特定类型的派生类

本文关键字:派生 类型 include | 更新日期: 2023-09-27 17:51:21

这个Lambda查询有什么问题?我希望能够只包含某种类型的ProjectDocs,可以有许多类型的ProjectDocs

 ICollection<Project> projects = db.Projects
      .Include(i => i.ProjectDoc.OfType<Cover>().Where(s => s.Status == "Active"))
      .Include(i => i.ProjectDoc.OfType<Summary>().Where(s => s.Status == "Active"))
      .Include(i => i.User)
      .Include(i => i.ProjectTag.Select(t => t.Tag)).ToList();

我有一个模型ProjectDoc与派生类Cover, Segment和Summary。我应该只是包括ProjectDoc和使用判别符列在一个条件以后?有些类型可以有大量的结果,而其他类型只有几个。

The Error I get…

 The Include path expression must refer to a navigation property defined 
 on the type. Use dotted paths for reference navigation properties and the 
 Select operator for collection navigation properties.
 Parameter name: path

Project的导航属性是ProjectDoc。派生类没有导航属性。当我尝试的时候,我得到了一大堆额外的键

. include()特定类型的派生类

不支持这种场景——你只能加载或不加载一组相关实体,但你不能应用过滤器表达式来加载实体的一个子集。

Include()的API文档列出了支持的不同表达式,并声明该方法只是将工作委托给底层Include()方法,以字符串作为参数,例如ObjectQuery.Include()。该方法的文档和链接页面"塑造查询结果"或多或少地表明,这是不支持的。