代码之家  ›  专栏  ›  技术社区  ›  Andreas Zita

实体框架:计算一个集合并包含另一个集合?

  •  3
  • Andreas Zita  · 技术社区  · 15 年前

    我有一个带聊天室,聊天信息和参与者的EF模型。有一次,我需要获取一个特定的聊天室,包括它的所有参与者,但只有在其中的消息数计数。在我下面的代码中 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 回复  |  直到 15 年前
        1
  •  0
  •   as-cii    15 年前

    尝试将参与者包括在选择中:

    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);