Blazor Server添加Scaffold Identity时无法选择现有ApplicationDbContext的解决办法
解决Blazor Server跨项目添加Scaffold Identity的步骤
1. 确认项目引用与依赖
- 确保Blazor Server项目已引用DataAccess项目(右键Blazor项目→添加→项目引用→勾选DataAccess)
- 给Blazor Server项目安装以下NuGet包:
Microsoft.AspNetCore.Identity.EntityFrameworkCoreMicrosoft.AspNetCore.Identity.UIMicrosoft.EntityFrameworkCore.Design
- 确保DataAccess项目已安装:
Microsoft.EntityFrameworkCoreMicrosoft.EntityFrameworkCore.SqlServerMicrosoft.AspNetCore.Identity.EntityFrameworkCore
2. 修正ApplicationDbContext继承关系
打开DataAccess项目中的ApplicationDbContext类,确保它继承自IdentityDbContext<IdentityUser>(而非普通的DbContext):
using Microsoft.AspNetCore.Identity.EntityFrameworkCore; using Microsoft.EntityFrameworkCore; public class ApplicationDbContext : IdentityDbContext<IdentityUser> { public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) { } // 你的自定义DbSet定义 }
3. 手动配置Program.cs中的服务
在Blazor Server项目的Program.cs中,添加DbContext与Identity服务注册:
var builder = WebApplication.CreateBuilder(args); // 添加DbContext,指定连接字符串 builder.Services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection"))); // 添加Identity服务 builder.Services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true) .AddEntityFrameworkStores<ApplicationDbContext>(); // 其他现有配置... var app = builder.Build(); // 中间件配置(确保添加以下Identity相关中间件) app.UseAuthentication(); app.UseAuthorization(); // 其他现有中间件... app.Run();
同时确认Blazor项目的appsettings.json中存在正确的连接字符串:
"ConnectionStrings": { "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=YourDbName;Trusted_Connection=True;MultipleActiveResultSets=true" }
4. 使用命令行脚手架生成Identity UI
放弃可视化界面,改用Package Manager Console执行命令(更稳定):
- 打开Visual Studio的工具→NuGet包管理器→包管理器控制台
- 设置默认项目为你的Blazor Server项目
- 执行以下命令(替换
YourBlazorServerProjectName和YourDataAccessProjectName为实际项目名):
Scaffold-Identity -Context ApplicationDbContext -Project YourBlazorServerProjectName -StartupProject YourBlazorServerProjectName -Force
- 若需要初始化数据库,执行迁移命令:
Add-Migration InitialIdentitySetup -Context ApplicationDbContext -Project YourDataAccessProjectName -StartupProject YourBlazorServerProjectName Update-Database -Context ApplicationDbContext -Project YourDataAccessProjectName -StartupProject YourBlazorServerProjectName
5. 验证并调整UI
生成完成后,Blazor项目中会新增Areas/Identity文件夹,包含Identity相关UI页面。可以根据需求修改这些页面,同时确保项目能正常编译运行。
内容的提问来源于stack exchange,提问作者RRuseva
相关产品推荐
相关产品推荐

