EF 6 Fügen Sie der Where-Klausel in Einer Include-Mit Navigation-Eigenschaft

Ich werde versuchen, diese Frage ohne Buchung alle Objekte in meinem Modell. Ich habe eine Recht komplexe Abfrage, die nur zwei Objekte in Bezug auf das problem.

Habe ich eine website zum ausführen von office-Fußball-pools. Also mein domain model Team und TeamRecords

Hier sind die Definitionen. Ich entfernte einige irrelevante Eigenschaften des Objekts.

public class Team
{
    ///<summary>
    ///Team ID
    ///</summary>
    public int TeamID { get; set; }


    ///<summary>
    ///Team Recordproperty
    ///</summary>
    public virtual ICollection<TeamRecord> TeamRecords { get; set; }
}

public class TeamRecord
{

    ///<summary>
    ///Team ID
    ///</summary>
    public int TeamID { get; set; }

    ///<summary>
    ///Team the record belongs to
    ///</summary>
    public virtual Team Team { get; set;}

    ///<summary>
    ///Season ID
    ///</summary>
    public int SeasonID { get; set; }

    ///<summary>
    ///Season navigation property
    ///</summary>
    public virtual Season Season { get; set; }

}

Muss ich konfigurieren, damit das Team TeamRecords Beziehung wie diese:

HasMany(t => t.TeamRecords).WithRequired(tr => tr.Team).HasForeignKey(tr=>new {tr.TeamID});

Dann ich versuchen, eine Abfrage ausführen, wie diese. Im Grunde, wenn ich wählen Sie ein team, ich will nur wählen Sie den teamrecord für die aktuelle Saison. Also ich möchte eine where-Klausel hinzufügen zu meinen Include-Methode. Ignorieren Sie die anderen Objekte in der Abfrage. Sie sind wahrscheinlich selbsterklärend.

var picks = context.Picks.Where(p => ((p.Game.SeasonID == seasonID) && (p.Game.Week ==     week) && (p.PoolID == poolID) && (p.UserID == userID)))
                            .Include(p => p.Game).Include(p => p.Game.HomeTeam).Include(p => p.Game.VisitingTeam).Include(p => p.Pool)
                            .Include(p => p.Game.HomeTeam.TeamRecords.Where(tr=>tr.SeasonID == seasonID))
                            .Include(p => p.Game.VisitingTeam.TeamRecords.Where(tr=>tr.SeasonID == seasonID))
                            .Select(p => p);

Wenn ich ausführen, dass die Linie des Codes, bekomme ich die folgende Fehlermeldung

Include-Pfad-Ausdruck muss sich zu einem Navigationssystem-Eigenschaft definiert den Typ. Verwenden Sie gestrichelten Pfaden für das Referenz-Navigations-Eigenschaften und Wählen Sie die Betreiber für die Sammlung und Navigations-Eigenschaften.

Wie kann ich erreichen diese Art der Filterung? Ich habe im internet gesucht und kein Glück gehabt.

InformationsquelleAutor jeff.eynon | 2014-08-13
Schreibe einen Kommentar