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