[英]How to use single DBContext in multiple identities in ASP.NET Core?
我正在使用 ASP.NET 核心身份开发登录系统。 我有两个身份:客户和会员。 当我尝试注册会员用户时,它会产生 InvalidOperationException。
客户端用户.cs
public class ClientUser : IdentityUser
{
[Required]
[MaxLength(100)]
public string FirstName { get; set; } = string.Empty;
[Required]
[MaxLength(100)]
public string LastName { get; set; } = string.Empty;
}
会员用户.cs
public class MemberUser : IdentityUser
{
[Required]
[MaxLength(100)]
public string MemberFirstName { get; set; } = string.Empty;
[Required]
[MaxLength(100)]
public string MemberLastName { get; set; } = string.Empty;
}
ClientContext.cs
public class ClientContext : IdentityDbContext<ClientUser>
{
public ClientContext(DbContextOptions<ClientContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
}
}
程序.cs
var builder = WebApplication.CreateBuilder(args);
var connectionString = builder.Configuration.GetConnectionString("RazorPagesPizzaAuthConnection");
builder.Services.AddDbContext<ClientContext>(options =>
options.UseSqlServer(connectionString));
//builder.Services.AddDbContext<MemberContext>(options =>
// options.UseSqlServer(connectionString));
builder.Services.AddDefaultIdentity<ClientUser>(options =>
{
options.SignIn.RequireConfirmedAccount = true;
options.Password.RequireNonAlphanumeric = false;
options.Password.RequireLowercase = false;
options.Password.RequireUppercase = false;
}).AddEntityFrameworkStores<ClientContext>();
builder.Services.AddIdentityCore<MemberUser>()
.AddRoles<IdentityRole>()
.AddClaimsPrincipalFactory<UserClaimsPrincipalFactory<MemberUser, IdentityRole>>()
.AddEntityFrameworkStores<ClientContext>()
.AddDefaultTokenProviders()
.AddDefaultUI();
// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddTransient<IEmailSender, EmailSender>();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
错误:
InvalidOperationException:无法为“MemberUser”创建 DbSet,因为此类型未包含在上下文的 model 中。
不确定,但您能否将 ClientContext 声明为:
public class ClientContext : IdentityDbContext<IdentityUser>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.