我开始学习 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);
我遇到了异常,据我所知,这是因为数据库中没有与模型对应的表。
The model backing the 'ApplicationDbContext' context has changed since the database was created.
我不想使用“代码优先”。我可以手动创建表并仍然能够使用 UserManager 吗?表/列将被称为什么?
相反,在我的项目中,我可以在哪里控制正在读取的现有数据库中的哪些表/列?
我现在有点困惑,经过几个小时的研究,我意识到我需要一些指导。我已经使用过 EF,因此我习惯于查找与数据库架构相对应的模型,但在这种情况下,我找不到任何具有类似于 Username 和 属性的类>密码等...
最佳答案
首先,您确实想要使用Code First,即使您正在使用现有数据库执行Code First(是的,我知道。这看起来很矛盾,但完全可以接受)。模型优先和数据库优先已弃用。
其次,如果您的问题是您有一个现有数据库,那么您最好的选择是创建一个带有个人身份验证项目的单独临时 MVC 5,让其创建其数据库,然后将表复制到您现有的数据库中。
关于c# - 普通 MVC 项目登录需要哪些表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32956982/