【发布时间】:2018-05-19 19:00:48
【问题描述】:
我遇到了一个问题,即 Entity Framework (Core) 在更新时删除了一个对象。我认为这与 Automapper(将 DTO 资源映射到对象)有关。我有其他对象以与此对象完全相同的方式映射,并且更新工作得很好。
public async Task<IActionResult> UpdateFeedback(Guid Id, [FromBody] FeedbackResource feedbackResource)
{
if (!ModelState.IsValid)
return BadRequest(ModelState);
//removing or else get a tracking error with EF
feedbackResource.FeedbackType = null;
var feedback = await feedbackRepository.GetFeedback(Id);
if (feedback == null)
return NotFound();
//if I use this line to map, EF will delete the object upon save.
mapper.Map<FeedbackResource, Feedback>(feedbackResource, feedback);
// if I map manually, i get no error
//feedback.Title = feedbackResource.Title;
//feedback.Details = feedbackResource.Details;
//feedback.IsGoodFeedback = feedbackResource.IsGoodFeedback;
//feedback.IsReviewed = feedbackResource.IsReviewed;
//feedback.FeedbackTypeId = feedbackResource.FeedbackTypeId;
//if(feedbackResource.IsReviewed){
// feedback.ReviewDate = DateTime.Now;
// feedback.ReviewedBy = UserId;
//} else {
// feedback.ReviewDate = null;
// feedback.ReviewedBy = null;
//}
await uow.CompleteAsync();
return Accepted(feedback);
}
我不知道要在这里解决什么问题,并且在任何谷歌搜索中都看不到这个问题。
【问题讨论】:
-
您应该首先在代码中添加一个断点,以便您可以检查映射操作的结果,并确保 FeedbackResource 的所有属性都已绑定并按预期显示。
标签: automapper entity-framework-core