【发布时间】:2020-04-11 02:05:55
【问题描述】:
我正在更新数据库寄存器,但在更新之前我获取了相同的寄存器。
因此我收到以下错误:
无法跟踪实体类型“位置”的实例,因为 {'Id'} 具有相同键值的另一个实例已经存在 跟踪。附加现有实体时,确保只有一个实体 附加了具有给定键值的实例。考虑使用 'DbContextOptionsBuilder.EnableSensitiveDataLogging' 查看 键值冲突。
这是代码:
[FunctionName(nameof(PostUpdatePosition))]
public ActionResult PostUpdatePosition([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "postUpdatePosition")]HttpRequestMessage request)
{
PositionViewModel viewModel;
try
{
// Received json
viewModel = JsonConvert.DeserializeObject(request
.Content
.ReadAsStringAsync()
.Result);
var clientId = positonRepository.GetById(viewModel.Id).ClientId;
// here the error appears. ▼
positonRepository.Update(new Domain.Entities.Position
{
Id = viewModel.Id,
Description = viewModel.Description,
Active = viewModel.Active,
ClientId = clientId
});
positonRepository.SaveChanges();
}
catch (Exception ex)
{
return StatusCode(StatusCodes.Status500InternalServerError,
new EasyEpiJson()
.GetInternalServerError(ex));
}
return Ok(new EasyEpiJson().GetOK(viewModel));
}
}
我该如何解决这个问题?
【问题讨论】:
-
您在这里制造自己的问题。只需摆脱 positionRepository 并直接在您的控制器中使用您的 DbContext 子类型。
标签: entity-framework linq azure-functions