繁体   English   中英

vanilla MVC 项目登录需要哪些表?

[英]What tables are needed for vanilla MVC project login?

我开始学习 MVC,我发现默认的以下部分,vanilla MVC-project 管理对数据库的实际调用以进行注册。

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东西吗? 表/列将被称为什么?

相反,我可以在我的项目中的哪个位置控制正在读取的现有数据库中的哪些表/列?

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

首先,您确实希望使用 Code First,即使您正在使用现有数据库执行 Code First(是的,我知道。这似乎矛盾,但完全可以接受)。 不推荐使用模型优先和数据库优先。

其次,如果您的问题是您有一个现有的数据库,那么最好的办法是创建一个单独的临时 MVC 5 与个人身份验证项目,让它创建它的数据库,然后将表复制到您现有的数据库中。

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

对于您在何处创建表的问题,其中大部分是在用于身份验证的 NuGet 包中的幕后完成的。 想象一下,如果您包含System.Linq; 要在您的代码中使用一些 Linq,它会为您处理其余的工作。 需要注意的是,如果您想稍微更改表,请转到模型文件夹中的 IdentityModels.cs 文件,然后向下滚动到OnModelCreation(DbModelBuilder modelBuilder)函数。 这是它修改和向数据库添加表或列的地方。 每次更改时,您都需要更新数据库(包管理器控制台 > 更新数据库)。

要考虑的另一件事是,如果您不希望它这样做,您将需要创建一个不包括身份验证的 MVC 项目并从头开始执行该部分。

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

另外,为了给您提供一些资源供您查看,microsoftvirtualacademy.com 有一些关于 MVC5 的视频,但如果您刚刚接触 MVC,则值得查看。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM