这个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 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”上的Navigation属性是ProjectDoc。派生类没有导航属性。当我尝试时,我有很多额外的钥匙。
答案 0 :(得分:2)
不支持此方案 - 您只能加载或不加载一组相关实体,但不能应用过滤器表达式来仅加载实体的子集。
API documentation for Include()
列出了支持的不同表达式,并声明该方法只是将工作委托给以字符串作为参数的基础Include()
方法,例如ObjectQuery.Include()
。此方法的文档和链接的页面Shaping Query Results使得或多或少明显不支持此方法。