什么表需要香草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 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处理身份验证数据库。