Я поигрался с EF Core и ASP.NET Core и наткнулся на следующую проблему.Я хотел добавить некоторые дополнительные данные в пользовательский объект в виде списка.Проблема в том, что список никогда не обновляется.
Вот мой DbContext:
public class ApplicationDbContext : IdentityDbContext<HostUser>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
{
}
}
А теперь мой пользовательский объект:
public class HostUser : IdentityUser
{
[PersonalData]
public ICollection<GuestUser> GuestUsers { get; set; }
}
А вот добавлениеновый GuestUser в Contoller:
[HttpPost]
public async Task<IActionResult> Post([FromBody]GuestUser userToInsert)
{
if (userToInsert == null)
{
return BadRequest();
}
var currentUser = await GetCurrentUserAsync();
if (currentUser == null)
{
return Forbid();
}
if(currentUser.GuestUsers?.Any(user => user.Id == userToInsert.Id) ?? false)
{
return BadRequest();
}
if(currentUser.GuestUsers == null)
{
currentUser.GuestUsers = new List<GuestUser>();
}
currentUser.GuestUsers.Add(userToInsert);
await userManager.UpdateAsync(currentUser);
return Ok();
}
Мой вопрос заключается в том, является ли это совершенно неправильным подходом, и мне нужно добавить DbSet для GuestUser в DbContext и сопоставить его с пользователем.Если это так, я понятия не имею, как этого добиться.Примечание. В этом случае GuestUser - это не другой IdentityUser, это данные локального пользователя