在检查用户是否存在于数据库中时,会发生“实体类型用户不是当前上下文模型的一部分”。
“抱歉我的英语不好”
这是我的背景:
public class UserContext : DbContext
{
public UserContext() :
base("PracticeDB")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<PracticeDB>().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);
}
}
}
答案 0 :(得分:0)
我认为你的UserContext中的这一行:
modelBuilder.Entity<PracticeDB>().ToTable("Users");
需要改为:
modelBuilder.Entity<User>().ToTable("Users");
答案 1 :(得分:0)
您需要在OnModelCreating中告诉DbContext有关用户模型的信息。尝试将PracticeDB
模型更改为User
中的modelBuilder.Entity<PracticeDB>().ToTable("Users");
。