1

这个 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();

我有一个带有派生类 Cover、Segment 和 Summary 的模型 ProjectDoc。我应该只包含 ProjectDoc 并稍后在条件中使用鉴别器列吗?一些类型可能有大量结果,而另一些则只有少数。

我得到的错误...

 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

“项目”上的导航属性是 ProjectDoc。派生类没有导航属性。当我尝试这样做时,我得到了很多额外的钥匙。

4

1 回答 1

2

不支持此方案 - 您只能加载或不加载一组相关实体,但不能应用过滤器表达式来仅加载实体的子集。

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

于 2013-01-10T23:53:18.293 回答