【发布时间】:2019-12-16 22:15:46
【问题描述】:
我正在使用 ASP.NET Core 2.2 创建一个 Web API,我正在尝试使用 Put 方法更新对象。我创建了这个 DTO 对象:
public class EditUserDTO
{
[MaxLength(255)]
public string Name { get; set; }
[MaxLength(55)]
public string MailAdress { get; set; }
public Guid? ProfilId { get; set; }
}
我的班级:
public class User
{
[MaxLength(255)]
public string Name { get; set; }
[MaxLength(55)]
public string MailAdress { get; set; }
[ForeignKey("ProfilId")]
public Guid? ProfilId { get; set; }
public virtual Profil Profil { get; set; }
}
我的PUT 方法:
public async Task<IActionResult> UpdateUser(Guid id, [FromBody]EditUserDTO user)
{
try
{
var userEntity = await _repoWrapper.UserRepo.GetUserByIdAsync(id);
if (userEntity == null)
{
_logger.LogError($"User with id: {id}, hasn't been found in db.");
return NotFound();
}
_mapper.Map(user, userEntity);
await _repoWrapper.UserRepo.UpdateUserAsync(userEntity);
_repoWrapper.Save();
return Ok();
}
}
我创建了一个自动映射器:
public Mappers()
{
CreateMap<User, EditUserDTO>().ReverseMap();
}
映射器执行后,外键ProfilId从DTO获取新值,但子对象Profil具有相同的旧值。
当我在执行PUT 后尝试从数据库中获取对象时,它仍然具有相同的旧值。
【问题讨论】:
标签: asp.net-core entity-framework-core asp.net-core-webapi