在检查数据库中是否存在用户时,“实体类型 User 不是当前上下文模型的一部分”

本文关键字:User 上下文 一部分 模型 实体类型 类型 是否 数据库 检查 存在 用户 | 更新日期: 2023-09-27 18:31:03

在检查数据库中是否存在用户时,会发生这种情况"实体类型用户不是当前上下文模型的一部分"。

"对不起,我的英语不好"

这是我的上下文:

public class UserContext : DbContext
{
    public UserContext() :
    base("PracticeDB")
    {
    }
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<User>().ToTable("Users");
    }
    public DbSet<User> Users { get; set; }
}

查看型号:

        namespace Models.Models
    {
        public class LoginModel
        {
            [Required]
            public string Name { get; set; }
            [Required]
            [DataType(DataType.Password)]
            public string Password { get; set; }
        }
    }

控制器:

namespace Models.Controllers
{
    public class AccountController : Controller
    {
        public ActionResult Login()
        {
            return View();
        }
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Login(LoginModel model)
        {
            if (ModelState.IsValid)
            {
                User user = null;
                using (UserContext db = new UserContext())
                {
                    user = db.Users.FirstOrDefault(u => u.Name == model.Name && u.Password == model.Password);
                }
                if (user != null)
                {
                    FormsAuthentication.SetAuthCookie(model.Name, true);
                    return RedirectToAction("Users");
                }
                else
                {
                    ModelState.AddModelError("", "Пользователя с таким логином и паролем нет");
                }
            }
            return View(model);
        }
    }
}

在此处输入图像描述

在检查数据库中是否存在用户时,“实体类型 User 不是当前上下文模型的一部分”

User 是一个预定义的关键字。所以你不能在这里使用它。您可以使用以下代码来检查有效用户。

            var Valid = False;
            using (UserContext db = new UserContext())
            {
                Valid = db.Users.Any(u => u.Name == model.Name && u.Password== model.Password);
            }
            if (Valid)
            {
                FormsAuthentication.SetAuthCookie(model.Name, true);
                return RedirectToAction("Users");
            }
            else
            {
                ModelState.AddModelError("", "Пользователя с таким логином и паролем нет");
            }