ASP.NET Identity als Ablösung des älteren ASP.NET Membership hat sich mittlerweile als Standardlösung einer flexiblen Identity-Verwaltung in ASP.NET etabliert. Standardmäßig wird dabei mit dem Entity Framework als Data Provider und Code First eine Datenbank im SQL Server erzeugt, welche die folgende Struktur besitzt:
Nun ist es zum Beispiel möglich, mittels einer von IdentityUser
abgeleiteten Klasse zusätzliche Profilinformationen zu hinterlegen, die dann als zusätzliche Spalten in der Tabelle AspNetUsers
gespeichert werden. Soweit so gut, doch als Entwickler möchte ich auch die Möglichkeit haben, Einfluss auf die standardmäßig automatisch generierten Tabellennamen zu haben. Evtl. möchte ich z.B. kein Prefix "AspNet"
vor den Tabellennamen stehen haben, wie werde ich diese also los?
Möglich ist das, indem ein individuelles Mapping im EF-DbContext
bei OnModelCreating()
hinterlegt wird:
[DbConfigurationType(typeof(CodedDbConfiguration))] public class ApplicationIdentityDbContext : IdentityDbContext { ... protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity<ApplicationUser>().ToTable("Users"); modelBuilder.Entity<IdentityRole>().ToTable("Roles"); modelBuilder.Entity<IdentityUserRole>().ToTable("UserRoles"); modelBuilder.Entity<IdentityUserLogin>().ToTable("UserLogins"); modelBuilder.Entity<IdentityUserClaim>().ToTable("UserClaims"); } }
Bei der Klasse ApplicationUser
handelt es sich hier um die von IdentityUser
abgeleitete Klasse, welche zusätzliche Profilinformationen beinhaltet und den Benutzer einer ASP.NET-Anwendung beschreibt.