ASP.NET Identity 2 table mapping [closed]

General Tech Learning Aids/Tools 2 years ago

0 2 0 0 0 tuteeHUB earn credit +10 pts

5 Star Rating 1 Rating

Posted on 16 Aug 2022, this text provides information on Learning Aids/Tools related to General Tech. Please note that while accuracy is prioritized, the data presented might not be entirely correct or up-to-date. This information is offered for general knowledge and informational purposes only, and should not be considered as a substitute for professional advice.

Take Quiz To Earn Credits!

Turn Your Knowledge into Earnings.

tuteehub_quiz

Answers (2)

Post Answer
profilepic.png
manpreet Tuteehub forum best answer Best Answer 2 years ago

 

Test database with multiple projects.

First MVC project works ok using Identity 2. Correct tables were built, i.e. AspNetUsers, AspNetRoles, etc

Second project on same database not working and I'm confused as to why not.

Pathway is Registration.

In my AccountController.cs, Register method is called as expected and hits this code:

var user = new ApplicationUser { UserName = model.ContactEmail, Email = model.ContactEmail };

Debugging with VS2015, shows user is fully populated.

Want to use standlone Identity tables so added following code which gets called correctly next (in my IdentityModels.cs file):

protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
            modelBuilder.Entity<IdentityUser>().ToTable("sp_AspNetUsers","dbo");
        }

Debugger shows no complaints.

Returns to next line in Account Controller.cs thus:

var result = await UserManager.CreateAsync(user, model.Password);

Error says "Cannot insert the value NULL into column 'UserName', table 'dbName.dbo.AspNetUsers';"

Error seems self explanatory BUT:

1) Why is it referencing the AspNetUsers table and not the sp_AspNetUsers table?

2) Debugging shows user.UserName has a value so why does it think it's NULL?

New to MVC and Identity so any pointers to aid my learning would be appreciated.


EDIT

I've now amended the code in IdentityModel.cs to:

protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
            modelBuilder.Entity<IdentityUser>().ToTable("sp_AspNetUsers");
            modelBuilder.Entity<ApplicationUser>().ToTable("sp_AspNetUsers");
            modelBuilder.Entity<IdentityUserRole>().ToTable("sp_AspNetUserRoles");
            modelBuilder.Entity<IdentityUserLogin>().ToTable("sp_AspNetUserLogins");
            modelBuilder.Entity<IdentityUserClaim>().ToTable("sp_AspNetUserClaim");
            modelBuilder.Entity<IdentityRole>().ToTable("sp_AspNetRoles");
        }

The error I now get is:

Invalid column name 'Discriminator'

Can't see this column in the Identity tables anywhere?

profilepic.png
manpreet 2 years ago

First delete all the tables related to ASP identity or rename them so you can copy the data later on and than try to recreate the tables and if you have success than restore the old data.


0 views   0 shares

No matter what stage you're at in your education or career, TuteeHub will help you reach the next level that you're aiming for. Simply,Choose a subject/topic and get started in self-paced practice sessions to improve your knowledge and scores.