Skip to content

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

@wieczorekmichal1

Description

@wieczorekmichal1

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions