【发布时间】:2019-03-01 08:19:21
【问题描述】:
我在玩 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:
[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();
}
我的问题是这是否是一个完全错误的方法,我必须在 DbContext 中添加一个 GuestUser 的 DbSet 并将其映射到用户。 如果是这种情况,我不知道如何实现这一点。 注意:这里的GuestUser不是另一个IdentityUser,它是本地用户数据
【问题讨论】:
标签: c# asp.net-core entity-framework-core asp.net-core-identity