2011-01-24 9 views
0

私はメッセージエンティティを含むMessageThreadエンティティを持っています。私はMessageThreadからすべてのメッセージに簡単にナビゲートできるように、外部キーが設定されています。各メッセージには、開始アドレスと終了アドレスがあります。特定のアドレスがメッセージを書き込んだり受信したりしたすべてのメッセージスレッドを取得するためのクエリを作成したいと思います。RIA Services、where句属性を使用する節

MessageThread 
{ 
    EntityCollection<Message> messages; 
} 

Message 
{ 
    long FromAccount; 
    long ToAccount; 
} 

クエリは、このようなものでなければなりませんが、私はMessageThreadクラスからのすべての方法にまで及びアドレスからナビゲートする方法を見つけ出すことはできません。

public IQueryable<MessageThread> GetMessageThreads(long userAccount) 
{ 
    return from messageThread in this.ObjectContext.MessageThreads 
      where messageThread.Messages.ToAddress == userAccount || 
       messageThread.Messages.FromAddress == userAccount 
      select messageThread; 
} 

messageThread.Messagesが収集され、両方ToAddressFromAddressコレクションから直接アクセスすることはできませんので、そのクエリは動作しません。

答えて

0

子アイテムを最初に選択し、親を追加します。最後に、後にあった親エンティティのリストを選択するだけです。

Messages.Include("MessageThread") 
     .Where(m => m.FromAccount == userAccount 
       || m.ToAccount == userAccount) 
     .Select(m => m.MessageThread) 

あなたが最後オフ選択を残す場合は、親とのメッセージのリストを取得するには含まれています。それはあなたが後で何をするかによって異なります。 (ある本、ビットすっきり)

OR ....

MessageThreads.Where(s => s.Messages.Any(m => m.FromAccount == userAccount 
              || m.ToAccount == userAccount)) 
関連する問題