📅  最后修改于: 2020-11-21 05:04:47             🧑  作者: Mango
在本章中,我们将讨论身份迁移。在ASP.NET Core MVC中,在Startup.cs文件中配置身份验证和身份功能。
public void ConfigureServices(IServiceCollection services) {
services.AddMvc();
services.AddEntityFramework()
.AddSqlServer()
.AddDbContextoption.
UseSqlServer(Configuration["database:connection"]));
services.AddIdentity()
.AddEntityFrameworkStores();
}
每当您更改一个实体类或更改DBContext派生类时,您就有可能必须创建一个新的迁移脚本以应用于数据库,并使该模式与代码中的内容同步。
在我们的应用程序中就是这种情况,因为我们现在从IdentityDbContext类派生FirstAppDemoDbContext类,它包含自己的DbSet,并且还将创建一个架构来存储有关其管理的实体的所有信息。
using Microsoft.AspNet.Identity.EntityFramework;
using Microsoft.Data.Entity;
namespace FirstAppDemo.Models {
public class FirstAppDemoDbContext : IdentityDbContext {
public DbSet Employees { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) {
optionsBuilder.UseSqlServer("Data Source = (localdb)\\MSSQLLocalDB;
Initial Catalog = FirstAppDemo;Integrated Security = True;
Connect Timeout = 30;Encrypt = False;
TrustServerCertificate = True;ApplicationIntent = ReadWrite;
MultiSubnetFailover = False");
}
}
}
现在让我们打开命令提示符,并确保我们位于我们项目的project.json文件所在的位置。
我们还可以通过键入dnx ef获得Entity Framework命令。
我们的project.json文件有一个部分,用于将该“ ef”关键字与EntityFramework.Commands映射。
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel",
"ef": "EntityFramework.Commands"
}
我们可以从这里添加迁移。我们还需要为迁移提供一个名称。让我们将v2用于版本2,然后按Enter。
迁移完成后,您的迁移文件夹中将有一个v2文件。
现在,我们想通过运行“ dnx ef数据库更新”命令将该迁移应用于我们的数据库。
实体框架将看到需要应用迁移,并且它将执行该迁移。
如果您进入SQL Server对象资源管理器,将看到我们之前创建的Employee表。您还将看到一些必须存储用户,声明,角色的其他表,以及一些将用户映射到特定角色的映射表。
所有这些表都与Identity框架提供的实体相关。
让我们快速浏览一下users表。
现在,您可以看到AspNetUsers表中的列包括用于存储在继承自Identity User的用户上看到的所有那些属性及其字段(如UserName和PasswordHash)的列。因此,您一直在使用某些内置的身份服务,因为它们还具有创建用户和验证用户密码的功能。