У меня есть три класса: Role
, Permission
и RolePermission
(разрешение роли — это третья таблица в отношении многие ко многим)
public class Role : Entity
{
public string Name { get; set; }
public string Description { get; set; }
public virtual ICollection<RolePermission> RolePermissions { get; set; }
}
public class Permission : Entity
{
public string Name { get; set; }
public virtual ICollection<RolePermission> RolePermissions { get; set; }
}
public class RolePermission : Entity
{
public int RoleId { get; set; }
public int PermissionId { get; set; }
public Permission Permission { get; set; }
public Role Role { get; set; }
}
Затем я использовал fluentAPI
для настройки отношения:
Для Role
:
HasMany(role => role.RolePermissions)
.WithRequired(rolePermission => rolePermission.Role)
.HasForeignKey(rolePermission => rolePermission.RoleId);
Для Permission
:
HasMany(permission => permission.RolePermissions)
.WithRequired(rolePermission => rolePermission.Permission)
.HasForeignKey(rolePermission => rolePermission.PermissionId);
Для RolePermission
:
HasRequired(rolePermission => rolePermission.Permission)
.WithMany(permission => permission.RolePermissions)
.HasForeignKey(rolePermission => rolePermission.PermissionId);
HasRequired(rolePermission => rolePermission.Role)
.WithMany(role => role.RolePermissions)
.HasForeignKey(rolePermission => rolePermission.RoleId);
Проблема в том, что заполняется только Role
объект.
var user = _userRepository.FirstOrDefaultAsync(us => us.Email == email); var userPermissions = user.UserRoles.First().Role.RolePermissions.Select(rp => rp.Permission).ToList();
- person Mihai Alexandru-Ionut   schedule 10.09.2018