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