Entity Framework .Wo verschachtelt .Gehören

Bin ich der Versuch, einen db-lookup über EF5-code-ersten. Die grundlegende Struktur und die Tabelle-Beziehungen sind wie folgt;

public partial class Member
{
    public int    RecordID {get; set;}
    public string Name     {get; set;}
    ...etc.
    public virtual ICollection<MemberLink> MasterLinks {get; set;}
    public virtual ICollection<MemberLink> SlaveLinks {get; set;}
    public virtual ICollection<Message>    ReceivedMessages {get; set;}
    public virtual ICollection<Message>    SentMessages {get; set;}
}

public partial class MemberLink
{
    public int            RecordID     {get; set;}
    public virtual Member MasterMember {get; set;}
    public virtual Member SlaveMember  {get; set;}
    ...etc.
}

public partial class Message
{
    public int            RecordID  {get; set;}
    public virtual Member Sender    {get; set;}
    public virtual Member Recipient {get; set;}
    ...etc.
}

Nun die Abfrage, die ich versuche zu führen, ist die Verwendung des MemberLinkRepository, und sieht aus wie;

public IList<MemberLink> GetMasterLinks(int p_MemberID)
{
    return Get()
           .Include ( memberLink => memberLink.MasterMember )
           .Include ( memberLink => memberLink.SlaveMember )
           .Include ( memberLink => memberLink.MasterMember.ReceivedMessages
                      .Where(
                      msg => msg.Sender.RecordID == memberLink.SlaveMember.RecordID) )
           .Where ( memberLink => memberLink.MasterMember.RecordID == p_MemberID)
           .ToList();

Außer EF scheint nicht, wie die verschachtelten Wo. Ich könnte aufgeteilt in 2 separate repository aufruft (und in der Tat, sieht es wie ich zu tun haben könnte, dass), aber im Interesse der Verringerung der Aufrufe der db-ich bin versucht, es zu tun in einer üblen Streich. Weiß jemand, wie ich erreichen kann das in einer einzigen Abfrage?

Ich hoffe, der code zeigt was ich zu tun versuche... Wenn nicht, werde ich versuchen und erklären, ein wenig besser.

InformationsquelleAutor user1861826 | 2013-09-10
Schreibe einen Kommentar