AspNetIdentity icon indicating copy to clipboard operation
AspNetIdentity copied to clipboard

Using navigation properties does not allow to use some methods from UserManager or RoleManager

Open wieczorekmichal1 opened this issue 1 year ago • 0 comments

I went through a guide describing how to configure navigation properties for the identity package and encounter a problem with relations between defined navigation properties, causing problem with eg. assinging role to user.

Steps to reproduce:

  1. Configure database context with the navigation properties eg. UserRoles link to source.
  2. Add application user using UserManager<ApplicationUser> with method CreateAsync.
  3. Add role using RoleManager<ApplicationRole> with method CreateAsync.
  4. Confirm that user and role are added to database.
  5. Assign role to the user using UserManager<ApplicationUser> with method AddToRoleAsync.
  6. Observe that there is new entry in UserRole table which is correct, but with incorrect UserId and RoleId, which does not exist and was generated with running previous step.

Users: image

UserRoles: image

Roles: image

I checked assigning role to user directly using ApplicationDbContext, which was successful and no ghost entries were added to Users and Roles tables:

context.UserRoles.Add(new ApplicationUserRole
{
    RoleId = adminRole.Id,
    Role = adminRole,
    UserId = admin.Id,
    User = admin,
});

The same situation happens when using other navigation properties like IdentityClaims and etc.

Issue reproduced with:

  • PostgreSQL 16
  • .NET 6
  • Microsoft.AspNetCore.Identity.EntityFrameworkCore 6.0.24

wieczorekmichal1 avatar Nov 10 '23 14:11 wieczorekmichal1