- ASP.NET Core 教程
- ASP.NET Core - 首页
- ASP.NET Core - 概述
- ASP.NET Core - 环境设置
- ASP.NET Core - 新建项目
- ASP.NET Core - 项目布局
- ASP.NET Core - Project.Json
- ASP.NET Core - 配置
- ASP.NET Core - 中间件
- ASP.NET Core - 异常处理
- ASP.NET Core - 静态文件
- ASP.NET Core - 设置 MVC
- ASP.NET Core - MVC 设计模式
- ASP.NET Core - 路由
- ASP.NET Core - 属性路由
- ASP.NET Core - 操作结果
- ASP.NET Core - 视图
- 设置 Entity Framework
- ASP.NET Core - DBContext
- ASP.NET Core - Razor 布局视图
- ASP.NET Core - Razor 视图启动
- ASP.NET Core - Razor 视图导入
- ASP.NET Core - Razor 标签助手
- ASP.NET Core - Razor 编辑表单
- ASP.NET Core - 身份概述
- ASP.NET Core - 授权属性
- 身份配置
- ASP.NET Core - 身份迁移
- ASP.NET Core - 用户注册
- ASP.NET Core - 创建用户
- ASP.NET Core - 登录和注销
- ASP.NET Core 有用资源
- ASP.NET Core - 快速指南
- ASP.NET Core - 有用资源
- ASP.NET Core - 讨论
ASP.NET Core - 身份迁移
在本章中,我们将讨论身份迁移。在 ASP.NET Core MVC 中,身份验证和身份功能在 Startup.cs 文件中配置。
public void ConfigureServices(IServiceCollection services) { services.AddMvc(); services.AddEntityFramework() .AddSqlServer() .AddDbContext<FirstAppDemoDbContext>option. UseSqlServer(Configuration["database:connection"])); services.AddIdentity<User, IdentityRole>() .AddEntityFrameworkStores<FirstAppDemoDbContext>(); }
任何时候,如果您对其中一个实体类进行更改,或者对派生自 DBContext 的类进行更改,您都可能需要创建一个新的迁移脚本应用到数据库,并将模式与代码中的内容同步。
在我们的应用程序中就是这种情况,因为我们现在将 FirstAppDemoDbContext 类派生自 IdentityDbContext 类,并且它包含自己的 DbSet,它还将创建模式以存储其管理的所有实体的相关信息。
using Microsoft.AspNet.Identity.EntityFramework; using Microsoft.Data.Entity; namespace FirstAppDemo.Models { public class FirstAppDemoDbContext : IdentityDbContext<User> { public DbSet<Employee> 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 database update”** 命令将该迁移应用到我们的数据库。
Entity Framework 将看到有一个需要应用的迁移,并且它将执行该迁移。
如果您进入 SQL Server 对象资源管理器,您将看到我们之前创建的 Employee 表。您还将看到一些其他表,这些表必须存储用户、声明、角色以及一些将用户映射到特定角色的映射表。
所有这些表都与 Identity 框架提供的实体相关。
让我们快速查看一下 **users 表**。
您现在可以看到 AspNetUsers 表中的列包括存储我们在继承的 Identity User 上看到的那些属性的所有列,以及它的字段,如 UserName 和 PasswordHash。因此,您一直在使用一些内置的身份服务,因为它们还包含创建用户和验证用户密码的功能。