Это невозможно напрямую, потому что отношения не имеют свойств.
Самый простой способ - отобразить соединительную таблицу как объект и спроецировать стороны, используя LINQ-to-objects для простоты использования.
Например, предполагая, что мы называем промежуточную сущность UserPermission
:
class User
{
// Real relationship, mapped as bag or set with one-to-many UserPermission
protected virtual ICollection<UserPermission> UserPermissions { get; set; }
public virtual IEnumerable<Permission> Permissions
{
get { return from up in UserPermissions select up.Permission; }
}
public void Add(Permission permission)
{
UserPermissions.Add(new UserPermission
{
User = this,
Permission = permission
});
}
}
Разрешение может быть точно таким же, если необходимо.