什么表需要香草MVC项目登录

本文关键字:MVC 项目 登录 香草 什么 | 更新日期: 2023-09-27 18:16:12

我开始学习MVC,我已经弄清楚,默认的以下部分,香草MVC项目管理实际调用数据库注册。

public async Task<ActionResult> Register(RegisterViewModel model)
{
  if (ModelState.IsValid)
  {
    var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
    var result = await UserManager.CreateAsync(user, model.Password);
    if (result.Succeeded)
    {
      await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
      return RedirectToAction("Index", "Home");
    }
    AddErrors(result);
  }
  return View(model);
}

然而,当我读到这一行时:

var result = await UserManager.CreateAsync(user, model.Password);

我得到一个异常,据我所知,这是因为数据库中没有与模型对应的表。

支持'ApplicationDbContext'上下文的模型在数据库创建后发生了变化。

我不想使用代码优先。我可以手动创建我的表,仍然能够使用UserManager的东西?表/列将被称为什么?

相反,在我的项目中,我可以控制哪些表/列在一个现有的DB正在读取?

我现在有点困惑,经过几个小时的研究,我意识到我需要一些指导。我已经完成了EF的工作,所以我习惯于找到一个模型,对应于DB模式,但在这种情况下,我找不到任何类的属性类似于用户名密码等…

什么表需要香草MVC项目登录

首先,您确实想要使用代码优先,即使您正在使用现有数据库(是的,我知道。这似乎是矛盾的,但完全可以接受)。模型优先和数据库优先已弃用。

第二,如果你的问题是你有一个现有的数据库,那么你最好的选择是创建一个单独的临时MVC 5与个人Auth项目,让它创建它的数据库,然后复制表到你现有的数据库。

我对MVC还很陌生,但我已经玩了MVC5一段时间了。我发现,默认情况下,它会先做代码。我还没有试过切换到其他东西,但是当你第一次运行这个程序时,它会为你建立数据库。对其运行方式的任何更改都需要更新数据库和/或启用迁移。它有一些默认使用的字段,但我建议运行它,以便它可以为您构建数据库。

关于它在哪里创建表的问题,大部分是在它用于身份验证的NuGet包中完成的。可以这样想,如果您在代码中包含System.Linq;来使用一些Linq,它会为您处理其余的事情。值得注意的是,如果您想稍微更改表,请转到模型文件夹中的IdentityModels.cs文件,然后向下滚动到OnModelCreation(DbModelBuilder modelBuilder)函数。这是它修改和添加表或列到数据库的地方。每次更改时,都需要更新数据库(Package Manager Console> update -database)。

另一件要考虑的事情是,如果你不希望它这样做,你会想要创建一个不包括身份验证的MVC项目,并从头开始做那部分。

如果这些都没有帮助,你想用它做什么?

也给你一些资源来检查,microsoftvirtualacademy.com有一些视频关于MVC5,但它值得一看,如果你刚刚进入MVC。

编辑:我还应该指出,MVC将自动处理一切为您在生成的数据库。有很多方法可以修改它的工作方式,但总的来说,它所做的调用都是自动完成的。您可以在函数和SQL查询中编写任何额外的代码供您使用,这是单独的,并让MVC处理身份验证数据库。