2016-08-19 52 views
0

WEB API如何篩選子集合實體框架

型號::

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)); 
}  

不工作,我有以「idioma」(語言)過濾:::

{ 
    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))); 
} 

錯誤:

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

我不能過濾器3級收集的孩子呢? 謝謝..

回答

0

您無法使用包含方法進行過濾。它只支持select。

免責聲明:我是這個項目的所有者Entity Framework Plus (EF+)

EF +查詢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

+0

謝謝,我會檢查EF +。 –