Ciao,
Я работаю в проекте .NET Core 2.2 с IdentityServer и ASP.NET Identity.
У меня есть следующие объекты:
Таблица ExtraDatas
+----+-------------+
| Id | Description |
+----+-------------+
| 1 | A |
| 2 | B |
| 3 | C |
+----+-------------+
AspNetRoles
+----+-------+----------------+------------------+
| Id | Name | NormalizedName | ConcurrencyStamp |
+----+-------+----------------+------------------+
| 1 | Admin | Admin | [NULL] |
| 2 | User | User | [NULL] |
+----+-------+----------------+------------------+
RoleExtraDatas
+-------------+-----------------+
| RoleId (FK) | ExtraDataId (FK)|
+-------------+-----------------+
| 1 | 1 |
| 1 | 3 |
| 2 | 2 |
+-------------+-----------------+
Представляется следующими классами:
public class ExtraData
{
[Key, Required]
public int Id { get; set; }
[Required, MaxLength(128)]
public string Description { get; set; }
public virtual ICollection<RoleExtraData> ExtraDatas { get; set; }
}
public class ApplicationRole: IdentityRole
{
public virtual ICollection<RoleExtraData> ExtraDatas { get; set; }
}
public class RoleExtraData
{
public string RoleId { get; set; }
public ApplicationRole Role { get; set; }
public int ExtraDataId { get; set; }
public ExtraData ExtraDatas { get; set; }
}
Внутри моего Startup.cs Я настроил удостоверение ASP.NET, передавая ссылку на мой ApplicationRole класс:
services.AddIdentity<IdentityUser, ApplicationRole>()
.AddEntityFrameworkStores<MyIdentityDbContext>()
.AddDefaultTokenProviders();
Внутри моего сервиса с внедрением зависимостей я получаю свойства UserManager и RoleManager , но когда я пытаюсь выполнить этот код, role.ExtraDatas пусто:
IdentityUser user = userManager.GetUserAsync(context.Subject).Result;
Task<IList<string>> roleList = userManager.GetRolesAsync(user);
foreach (var roleId in roleList.Result)
{
ApplicationRole role = roleManager.FindByNameAsync(roleId).Result;
// the property role.ExtraDatas is empty
}
Как я могу решить эту проблему?
Большое спасибо