在EF中过滤多级包含

时间:2017-10-21 21:06:22

标签: entity-framework

我在3个表之间有以下关系

祖父母:环境

父级:组织

child:Dataset

我想选择所有数据集 来自OrganizationName == org的组织 以及EnvironmentName == env

的环境

我尝试使用Entity Framework

   var result = myContext.Environment
                                .Where(t => t.EnvironmentName == env)
                                .Include(s => s.Organizations)
                                .Where(t => t.OrganizationName == org)
                                .Include(t => t.Datasets);

但它不起作用 - 错误消息说t.OrganizationName不是Environment的成员 - 这是真的

OrganizationName和EnvironmentName是唯一的

如何做到这一点?

2 个答案:

答案 0 :(得分:0)

您可以使用此查询选择数据集:

package.json

答案 1 :(得分:0)

免责声明:我是该项目的所有者Entity Framework Plus

EF + Query IncludeFilter功能允许过滤相关实体。

var result = myContext.Environment
            .Where(t => t.EnvironmentName == env)
            .IncludeFilter(s => s.Organizations.Where(o => OrganizationName == org))
            .IncludeFilter(t => t.Datasets);

注意:你不能混用Include&& IncludeFilter。