0

在檢查用戶是否存在於數據庫中時,會發生這種情況:「實體類型用戶不是當前環境的模型「。在檢查用戶是否存在於數據庫中時「實體類型用戶不是當前上下文的模型的一部分」

「對不起,我的英語不好」

這是我的背景:

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

    } 
} 

enter image description here

+1

清理,重建您的解決方案並參見 – Shyju

+0

另外請確保您實際創建了遷移和更新數據庫。 –

回答

0

用戶是一個預定義的關鍵字。所以你不能在這裏使用它。您可以使用下面的代碼來檢查有效的用戶。

  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("", "Пользователя с таким логином и паролем нет"); 
      } 
+0

這不起作用( – JonnyJon44

相關問題