环境准备:

1、VS 2022 免费社区版

开工: 先实现 EF Core + MySQL + Identity

创建新项目 -> ASP.NET Core Web 应用 (MVC)

 

 

 

可以先不勾选Docker,后面再加,但是要用Identity 就需要勾上 配置HTTPS , 并选择身份验证类型为: 个人账户

 

 

 

 

 

默认情况下,是连接的本地SQLite数据库;

通过NuGet 安装 Pomelo.EntityFrameworkCore.MySql

  修改 appsettings.json中 DefaultConnection 字符串,指向 Azure MySql 

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=xxxxxdb.mysql.database.chinacloudapi.cn; Port=3306; Database={your_database}; Uid=dbadmin@xxxxxdb; Pwd={your_password}; SslMode=Preferred;"
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*"
}

修改 Program.cs中 builder.Services.AddDbContext ,如下红色字部分:

builder.Services.AddDbContext<ApplicationDbContext>(options =>
    options.UseMySql(connectionString, new MySqlServerVersion(new Version(5, 7, 19))));
builder.Services.AddDatabaseDeveloperPageExceptionFilter();

//注:在此由于考虑后期需要 修改或者扩展 Identity默认的页面及用户类,建议是开始业务代码前 先直接导入Identity基架,选择新增 Context 和 User 类;

 

 

 

 

把原先的 ApllicationDbContext作为以后应用的业务用DBContext;

修改Program.cs 把新增加的IDContext 也使用 DefaultConnection字符串:

把原先 DefaultIdentity 相关的用户类和Context 全部转换为新的Context和用户类:

var connectionString = builder.Configuration.GetConnectionString("DefaultConnection");
builder.Services.AddDbContext<ApplicationDbContext>(options =>
    options.UseMySql(connectionString, new MySqlServerVersion(new Version(5, 7, 19))));

builder.Services.AddDbContext<IDContext>(options =>
    options.UseMySql(connectionString, new MySqlServerVersion(new Version(5, 7, 19))));
builder.Services.AddDatabaseDeveloperPageExceptionFilter();

builder.Services.AddDefaultIdentity<POSystemUser>(options => options.SignIn.RequireConfirmedAccount = true)
    .AddEntityFrameworkStores<IDContext>();
builder.Services.AddControllersWithViews();
@using Microsoft.AspNetCore.Identity
@using POSystem.Areas.Identity.Data
@inject SignInManager<POSystemUser> SignInManager
@inject UserManager<POSystemUser> UserManager

_LoginPartial.cshtml中原Identity的用户类也需要进行调整;

准备开始数据库迁移,先进行一次编译,按F6 进行编译;

删除原先的 Migrations 目录:

 

 再用MySQL Workbench客户端先连上Azure MySql 数据库看是空了,没有一个表:

 

 最后通过 程序包管理器控制台 来生成数据库迁移 及 执行数据库迁移: (迁移过程中,由于多个Context,需要指定Context)

 

 

 

 

 再通过MySQL Workbench客户端刷新后看看:

 

 至此,Identity默认格式的  role 、user 等基础表就创建好了;

跑起来看一下:

 

点右上角Register 按钮: 输入email和两次密码:

 

 进入Confirm页面,点击 Click here to confirm your account:

email确认页面,这个页面是个壳子,以后根据需要可以完善,用户注册后,需要通过邮箱里收到的号码进行确认:

 

 以上结束后,点右上角Login,试着 登录看一下:

 

 

 完美,爱死 Identity了,一句代码不写,一个基本应用的用户注册就搭好了:

 

 

用MySQL客户端看下数据库User表: