2016-08-19 5 views
0

WEB APIWie filtern Kind Sammlungen Entity Framework

Modell ::

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

-Controller ::

ok Arbeiten :::

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

Ein Problem, ich habe filtern nach "idioma" (sprache) :::

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

Fehler:

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

Kann ich 3 Level Sammlung Kind nicht filtern? Vielen Dank ..

Antwort

0

Sie können nicht mit Include-Methoden filtern. Es unterstützt nur Auswahl.

Haftungsausschluss: Ich bin der Besitzer des Projekts Entity Framework Plus (EF+)

EF + Abfrage IncludeFilter können Sie leicht kontrollierte Unternehmen filtern:

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

Sie die Dokumentation here

+0

finden Danke, ich werde EF + auschecken .. –

Verwandte Themen