Я получаю эту ошибку
Исключение типа 'System.InvalidOperationException' произошло в EntityFramework.dll, но не было обработано в коде пользователя
Тип сущности tblMessage не является частью модели для текущего контекста.
Также говорится, что C. нельзя использовать, потому что он не определен. Я делал нечто подобное ранее в коде, и раньше у меня не было проблем с моим chatcontext.
Я пытаюсь получить сообщения из таблицы базы данных, которая называется tblMessages
.
Конструктор:
public JsonResult ConversationWithContact(int contact)
{
if (Session["UserID"] == null)
{
return Json(new {status = "error", message = "User is not logged in"});
}
//var currentUser = (Models.tblUser)Session["UserID"];
var conversations = new List<Models.tblMessage>();
using (var db = new Models.ChatContext())
{
int currentUserId = (int)Session["UserID"];
var currentUser = db.Users.FirstOrDefault(x => x.Id == currentUserId);
conversations = db.Conversations.Where(c => (c.receiverId == currentUser.Id
&& c.senderId == contact) ||
(c.receiverId == contact
&& c.senderId == currentUser.Id))
.OrderBy(c => c.created_at)
.ToList();
}
return Json(
new {status = "success", data = conversations},
JsonRequestBehavior.AllowGet
);
}
Контекст:
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;
using Trinity.Controllers;
using System.ComponentModel.DataAnnotations.Schema;
namespace Trinity.Models
{
public class ChatContext : DbContext
{
public ChatContext() : base("TrinityEntities")
{
}
public static ChatContext Create()
{
return new ChatContext();
}
public DbSet<tblUser> Users { get; set; }
public DbSet<tblMessage> Conversations { get; set; }
}
}
Модель базы данных tblmessage класс:
using System.ComponentModel.DataAnnotations.Schema;
namespace Trinity.Models
{
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
public partial class tblMessage
{
public tblMessage()
{
status = messageStatus.Sent;
}
public enum messageStatus
{
Sent,
Delivered
}
public int Id { get; set; }
public int senderId { get; set; }
public int receiverId { get; set; }
public string message { get; set; }
[NotMapped]
public messageStatus status { get; set; }
public System.DateTime created_at { get; set; }
}
}
Модель базы данных tblmessage class:
namespace Trinity.Models
{
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
public partial class tblUser
{
public int Id { get; set; }
[DisplayName("First Name")]
[Required(ErrorMessage = "This field is required")]
[RegularExpression(@"^[^\W\d_]+$", ErrorMessage = "Only letters allowed in your name")]
public string FirstName { get; set; }
[DisplayName("Last Name")]
[Required(ErrorMessage = "This field is required")]
[RegularExpression(@"^[^\W\d_]+$", ErrorMessage = "Only letters allowed in your name")]
public string LastName { get; set; }
public string BIO { get; set; }
[DisplayName("E-Mail")]
[Required(ErrorMessage = "This field is required")]
[RegularExpression(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*", ErrorMessage = "Incorrect E-mail Format")]
public string Email { get; set; }
[DataType(DataType.Password)]
[Required(ErrorMessage = "This field is required")]
[RegularExpression(@"^.*(?=.{8,})(?=.*[\d])(?=.*[\W]).*$", ErrorMessage = "Password must be 8 charhacters, contain atleast 1 digit and one special character")]
public string Password { get; set; }
[DisplayName("Confirm Password")]
[DataType(DataType.Password)]
[Required(ErrorMessage = "This field is required")]
[Compare("Password", ErrorMessage ="Passwords are not the same")]
public string ConfirmPassword { get; set; }
public string Photo { get; set; }
[DisplayName("Age")]
[Required(ErrorMessage = "This field is required")]
public int Age { get; set; }
public string Sex { get; set; }
public string Preferred { get; set; }
}
}