AspNetIdentity
AspNetIdentity copied to clipboard
Using navigation properties does not allow to use some methods from UserManager or RoleManager
trafficstars
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:
- Configure database context with the navigation properties eg.
UserRoleslink to source. - Add application user using
UserManager<ApplicationUser>with methodCreateAsync. - Add role using
RoleManager<ApplicationRole>with methodCreateAsync. - Confirm that user and role are added to database.
- Assign role to the user using
UserManager<ApplicationUser>with methodAddToRoleAsync. - Observe that there is new entry in
UserRoletable which is correct, but with incorrectUserIdandRoleId, which does not exist and was generated with running previous step.
Users:
UserRoles:
Roles:
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