-1

I am trying to insert many to many relation entity in ef core.

I am getting this error when I try to insert:

Object reference not set to an instance of an object

Here is entities:

public class ApplicationUser : IdentityUser
{
   ... other properties
  //many to many
  public ICollection<UserPermission> UserPermissions { get; set; }
}

public class Permission:EntityBase
{
 public string Name { get; set; }
 //many to many
 public ICollection<UserPermission> UserPermissions { get; set; }
}

 //join entity

public class UserPermission
{
    public string UserId { get; set; }
    public ApplicationUser User { get; set; }
    public int PermissionId { get; set; }
    public Permission Permission { get; set; }
}

Here is also Fluent-Api

        //user-permission many to many relationship
        builder.Entity<UserPermission>()
            .HasKey(up => new { up.UserId, up.PermissionId });

        builder.Entity<UserPermission>()
            .HasOne(up => up.User)
            .WithMany(p => p.UserPermissions)
            .HasForeignKey(x => x.UserId);

        builder.Entity<UserPermission>()
            .HasOne(p => p.Permission)
            .WithMany(u => u.UserPermissions)
            .HasForeignKey(x => x.PermissionId);

Here I tried a method to insert:

    public void AssignPermissions(ApplicationUser user,ICollection<int> permissions){
        try
        {
            if (user != null)
            {
                foreach (var per in permissions)
                {
                    var permission = _permissionRepository.GetById(per);
                    var userPermission = new UserPermission {
                        UserId = user.Id,
                        PermissionId = permission.Id
                    };
                    userPermission.Permission = permission;
                    userPermission.User = user;
                    user.UserPermissions.Add(userPermission);
                    _uow.Commit();
                }
            }
        }
        catch (Exception ex)
        {

            throw ex;
        }
    }

When I try to assign permission in AssignPermissions method I am getting the error.

How can I solve this?

Thanks

Ian Kemp
  • 24,155
  • 16
  • 97
  • 121
tcetin
  • 599
  • 13
  • 31

1 Answers1

-1

I solved with adding Include parameter in the ApplicationUser query.

            var user = await _userManager.Users
                    .Include(x => x.UserPermissions)
                    .SingleAsync(x => x.Email == model.Email);
tcetin
  • 599
  • 13
  • 31