【发布时间】:2021-04-05 03:53:07
【问题描述】:
所以我正在开发一个 api 控制器,我有一个这样的更新方法:
[HttpPost("update")]
public async Task<IActionResult> Update([FromBody] UpdateModel model)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var user = _userManager.Users
.Include(u => u.Address)
.FirstOrDefault(u => u.UserName == model.Email);
if (user == null)
{
return BadRequest(new {Message = "User doesn't exist"});
}
user.FirstName = model.FirstName;
user.LastName = model.LastName;
user.Address = model.Address;
await _userManager.UpdateAsync(user);
return Ok(new {Message = "User has been updated successfully"});
}
当通过 api 调用更新用户时,除了地址之外,用户都会得到更新。
这是地址:
public class Address : Entity
{
public string AddressLine { get; set; }
public string PostalCode { get; set; }
public string City { get; set; }
}
以及更新模型:
public class UpdateModel
{
[Required]
[MinLength(3)]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
[Required]
[EmailAddress]
public string Email { get; set; }
public Address Address { get; set; }
}
我已经完成了正确的迁移,并尝试在用户变量上设置断点。在调用 updateAsync 之前,该变量确实保存了一个地址。
用户的名字和姓氏都在 POST 请求中得到更新,但地址仍然为空。
有人知道为什么会这样吗?
【问题讨论】:
-
你能告诉我们一些课程吗?自定义用户、实体和您的 DbContext。
标签: asp.net api asp.net-core usermanager