Removing an ASP.NET Identity Column from an AspNetUsers Table

When I use the first ASP.NET Identity code approach, I want to create columns in the AspNetUsers table in my own way. I do not need to store multiple columns with null values. I just need the columns Id, SecurityStamp and UserName. Only the message I found is here: Duplicate email and AspNet Identity 2.0 username , but it is still not used (due to an error in Santosh's comment).

So can someone tell me how to solve this?

EDIT: Is it possible to remove some of these columns / properties?

thanks

+6
source share
3 answers

The short answer is no, without going around your own implementation. Or you can wait while they open the asp.net source code on codeplex . Who knows how long it will take.

The default implementation includes all unused columns (see below).

// Summary: // Default EntityFramework IUser implementation // // Type parameters: // TKey: // // TLogin: // // TRole: // // TClaim: public class IdentityUser<TKey, TLogin, TRole, TClaim> : IUser<TKey> where TLogin : Microsoft.AspNet.Identity.EntityFramework.IdentityUserLogin<TKey> where TRole : Microsoft.AspNet.Identity.EntityFramework.IdentityUserRole<TKey> where TClaim : Microsoft.AspNet.Identity.EntityFramework.IdentityUserClaim<TKey> { // Summary: // Constructor public IdentityUser(); // Summary: // Used to record failures for the purposes of lockout public virtual int AccessFailedCount { get; set; } // // Summary: // Navigation property for user claims public virtual ICollection<TClaim> Claims { get; } // // Summary: // Email public virtual string Email { get; set; } // // Summary: // True if the email is confirmed, default is false public virtual bool EmailConfirmed { get; set; } // // Summary: // User ID (Primary Key) public virtual TKey Id { get; set; } // // Summary: // Is lockout enabled for this user public virtual bool LockoutEnabled { get; set; } // // Summary: // DateTime in UTC when lockout ends, any time in the past is considered not // locked out. public virtual DateTime? LockoutEndDateUtc { get; set; } // // Summary: // Navigation property for user logins public virtual ICollection<TLogin> Logins { get; } // // Summary: // The salted/hashed form of the user password public virtual string PasswordHash { get; set; } // // Summary: // PhoneNumber for the user public virtual string PhoneNumber { get; set; } // // Summary: // True if the phone number is confirmed, default is false public virtual bool PhoneNumberConfirmed { get; set; } // // Summary: // Navigation property for user roles public virtual ICollection<TRole> Roles { get; } // // Summary: // A random value that should change whenever a users credentials have changed // (password changed, login removed) public virtual string SecurityStamp { get; set; } // // Summary: // Is two factor enabled for the user public virtual bool TwoFactorEnabled { get; set; } // // Summary: // User name public virtual string UserName { get; set; } } 
+3
source

In fact, you can ignore fields, you just need to configure your OnModelCreating object in your context. Class as:

 protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity<IdentityUser>().Ignore(c => c.AccessFailedCount) .Ignore(c=> c.LockoutEnabled) .Ignore(c=>c.LockoutEndDateUtc) .Ignore(c=>c.Roles) .Ignore(c=>c.TwoFactorEnabled);//and so on... modelBuilder.Entity<IdentityUser>().ToTable("Users");//to change the name of table. } 
+16
source

In fact, you can simply set your object to OnModelCreating your context class.

 protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<IdentityUser>().Ignore(u => u.AccessFailedCount); //and so on... } 

Or, if your application has a separate file for each configuration (this is what I recommend), you can do the following:

 public class ApplicationUserEntityTypeConfiguration : EntityTypeConfiguration<ApplicationUser> { public ApplicationUserEntityTypeConfiguration() { Ignore(p => p.AccessFailedCount); //And so on.. } } 
+3
source

Source: https://habr.com/ru/post/974523/


All Articles