неожиданная ошибка при использовании моей базы данных контекста - PullRequest
0 голосов
/ 11 апреля 2019

Я получаю эту ошибку

Исключение типа '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; }
    }
}
...