所以我正在研究一个 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 请求中得到更新,但地址仍然为空。
有谁知道为什么会发生这种情况?