RIA Services, где предложение с использованием дочерних атрибутов - PullRequest
0 голосов
/ 24 января 2011

У меня есть сущность MessageThread, которая содержит сущности Message. Внешний ключ настроен так, что я могу легко перейти от MessageThread ко всем сообщениям. Каждое сообщение имеет адрес отправителя и адрес. Я хочу написать запрос для извлечения всех потоков сообщений, для которых конкретный адрес написал или получил сообщение.

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 - это коллекция, а ToAddress и FromAddress не доступны напрямую из коллекции.

1 Ответ

0 голосов
/ 29 июня 2011

Сначала выберите дочерние элементы, а затем включите родительский.Затем, в конце, просто выберите список родительской сущности, за которой вы были.Это зависит от того, что вы, где после.

ИЛИ .... (это немного аккуратнее)

MessageThreads.Where(s => s.Messages.Any( m => m.FromAccount == userAccount
                                            || m.ToAccount == userAccount))
...