0

所以我正在研究一个 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 请求中得到更新,但地址仍然为空。

有谁知道为什么会发生这种情况?

4

1 回答 1

0

我认为您在用户和地址之间设置了一对一的映射。所以首先检查关系映射&仍然不起作用然后尝试创建地址的新变量,然后将这个新变量分配给 user.Address

于 2020-12-28T11:14:39.790 回答