Reputation: 193
I am developing a login system with ASP.NET Core Identity. I have two identities: Client and Member. When I tried to register a Member user it produces an InvalidOperationException.
ClientUser.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;
}
MemberUser.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);
}
}
Program.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();
Error:
InvalidOperationException: Cannot create a DbSet for 'MemberUser' because this type is not included in the model for the context.
Upvotes: 0
Views: 434
Reputation: 46
Not sure, but could you want to declare ClientContext as:
public class ClientContext : IdentityDbContext<IdentityUser>
Upvotes: 1