【问题标题】:How to filter child collections Entity Framework如何过滤子集合实体框架
【发布时间】:2016-12-27 01:27:33
【问题描述】:

网页接口

型号::

public class Empresa
{
    [Key]
    public string CDEmpresa { get; set; }

    public string NomeFantasia { get; set; }

    [IgnoreDataMember]
    public string Nome{ get; set; }

    public List<EmpresaRamoAtividade> EmpresaRamoAtividade { get; set; }
}

public class EmpresaRamoAtividade
{
    [Key]
    public int CTRamoAtividade { get; set; }

    [IgnoreDataMember]
    public string CDEmpresa { get; set; }

    public List<RamoAtividade> RamoAtividade { get; set; }
}


public class RamoAtividade
{
    [IgnoreDataMember]
    [Key]
    public int CTRamoAtividadeTraducao { get; set; }

    public int CTRamoAtividade { get; set; }

    public string Atividade { get; set; }

    public int Idioma { get; set; }
}

控制器::

工作正常:::

{
    return db.Empresas
    .Where(a => a.Associado.IsAssociado)
    .Include(empresaRamo => empresaRamo.EmpresaRamoAtividade)
    .Include(ramo => ramo.EmpresaRamoAtividade.Select(atividade =>     atividade.RamoAtividade));
}       

不工作,我必须按“惯用语”(语言)过滤:::

{
    return db.Empresas
    .Where(a => a.Associado.IsAssociado)
    .Include(empresaRamo => empresaRamo.EmpresaRamoAtividade)
    .Include(ramo => ramo.EmpresaRamoAtividade.Select(atividade => atividade.RamoAtividade.Where(idioma => idioma.Idioma == 1)));
}

错误:

包含路径表达式必须引用导航属性 在类型上定义。使用虚线路径进行参考导航 属性和用于集合导航的 Select 运算符 特性。参数名称:路径

我不能过滤 3 级集合子吗? 谢谢。。

【问题讨论】:

    标签: entity-framework linq asp.net-web-api


    【解决方案1】:

    您不能使用 Include 方法进行过滤。它只支持选择。

    免责声明:我是项目的所有者Entity Framework Plus (EF+)

    EF+ Query IncludeFilter让您轻松过滤相关实体:

    {
        return db.Empresas
        .Where(a => a.Associado.IsAssociado)
        .IncludeFilter(empresaRamo => empresaRamo.EmpresaRamoAtividade)
        .IncludeFilter(ramo => ramo.EmpresaRamoAtividade.Select(atividade => atividade.RamoAtividade.Where(idioma => idioma.Idioma == 1)));
    }
    

    您可以找到文档here

    【讨论】:

      猜你喜欢
      • 2016-02-15
      • 1970-01-01
      • 2011-10-28
      • 1970-01-01
      • 2014-08-02
      • 1970-01-01
      • 2017-11-08
      • 2023-03-14
      • 1970-01-01
      相关资源
      最近更新 更多