Search code examples
c#asp.net-mvcef-code-first-mapping

Mapping to model


How do I map join table data to a model in the code first approach with entity? I'd like to fetch the user info belonging to the chat message when i fetch chat messages. I'm getting the error

cannot type linq.iqueryable to collections.generic.list

but i'm unable to ToList() my iqueryable.

   List<Models.ChatMessageModel> list = from dbModel in db.ChatMessages
                                              join a in db.Users on dbModel.UserId equals a.UserId
                                              select new Models.ChatMessageModel
                                              {
                                                  User = new Models.UserModel
                                                  {
                                                      UserId = dbModel.UserId,
                                                      UserName = a.UserName
                                                  },
                                                  UserId = a.UserId,
                                                  DateSent = dbModel.DateSent,
                                                  ChatMessage = dbModel.ChatMessage,
                                                  ChatMessageId = dbModel.ChatMessageId
                                              };

ChatMessageModel

 public class ChatMessageModel
    {
        [Key]
        public Guid ChatMessageId { get; set; }

        public virtual Guid UserId { get; set; }

        [ForeignKey("UserId")]
        public virtual UserModel User { get; set; }
        public string ChatMessage { get; set; }

        public DateTime DateSent { get; set; }
    }

Solution

  • Just convert to List using ToList method

    List<Models.ChatMessageModel> list = (from dbModel in db.ChatMessages
            join a in db.Users on dbModel.UserId equals a.UserId
            select new Models.ChatMessageModel
            {
               User = new Models.UserModel
               {
                   UserId = dbModel.UserId,
                   UserName = a.UserName
               },
               UserId = a.UserId,
               DateSent = dbModel.DateSent,
               ChatMessage = dbModel.ChatMessage,
               ChatMessageId = dbModel.ChatMessageId
            }).ToList();