Entity Framework: Подсчитать одну коллекцию и включить другую? - PullRequest
3 голосов
/ 14 ноября 2010

У меня есть EF-модель с ChatRoom, ChatMessage и участником. В какой-то момент мне нужно получить определенный ChatRoom, включая всех его участников, но только с количеством сообщений в нем. В моем коде ниже свойство Room отсутствует его участников:

var res = context.Entities
                 .OfType<ChatRoom>()
                 .Include("Participants")
                 .Select(r => new
                              {
                                 Room = r,
                                 Messages = r.ChatMessages.Count()
                              })
                 .FirstOrDefault(c => c.Room.Id == id);

При этом, как это работает:

var res = context.Entities
                 .OfType<ChatRoom>()
                 .Include("Participants")
                 .FirstOrDefault(r => r.Id == id);

Почему оператор включения теряется при выполнении Select для нового анонимного типа?

1 Ответ

0 голосов
/ 14 ноября 2010

Попробуйте включить участников в список избранных:

var res = context.Entities
             .OfType<ChatRoom>()
             .Include("Participants") // I think this could be removed.
             .Select(r => new
                          {
                             Room = r,
                             Messages = r.ChatMessages.Count(),
                             Participants = r.Participants
                          })
             .FirstOrDefault(c => c.Room.Id == id);
...