Code: Select all
RegistrationDate
Dann musste ich einige Benutzerstandardfelder ändern (
Code: Select all
UserName
Meine benutzerdefinierte Modellklasse sieht folgendermaßen aus:
Code: Select all
public class ExtendedIdentityUser : IdentityUser
{
public override string UserName { get; set; } = string.Empty;
public override string Email { get; set; } = string.Empty;
public DateTime RegistrationDate { get; set; }
}
Code: Select all
public class ExtendedIdentityUserMap : IEntityTypeConfiguration
{
public void Configure(EntityTypeBuilder builder)
{
// Properties
builder.Property(u => u.UserName).HasColumnName("UserName").IsRequired();
builder.Property(u => u.Email).HasColumnName("Email").IsRequired();
builder.Property(u => u.RegistrationDate).IsRequired();
// Default values
builder.Property(u => u.RegistrationDate).HasDefaultValueSql("GETDATE()")
}
}
Code: Select all
ApplicationDbContext
Code: Select all
public class ApplicationDbContext(DbContextOptions options) : IdentityDbContext(options)
{
public DbSet ExtendedIdentityUsers { get; set; }
// another tables
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.ApplyConfiguration(new ExtendedIdentityUserMap());
// another mappings
}
}
Code: Select all
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterColumn(
name: "UserName",
table: "AspNetUsers",
type: "nvarchar(256)",
maxLength: 256,
nullable: false,
defaultValue: "",
oldClrType: typeof(string),
oldType: "nvarchar(256)",
oldMaxLength: 256,
oldNullable: true);
migrationBuilder.AlterColumn(
name: "Email",
table: "AspNetUsers",
type: "nvarchar(256)",
maxLength: 256,
nullable: false,
defaultValue: "",
oldClrType: typeof(string),
oldType: "nvarchar(256)",
oldMaxLength: 256,
oldNullable: true);
}
Meine Frage ist: Was bin ich? fehlen? Warum sind die Felder „Benutzername“ und „E-Mail“ für mein Benutzerobjekt leer?
Wenn es möglich ist, möchte ich es vermeiden, einen eigenen UserManager als Lösung zu implementieren.