由于某些原因,我的编辑操作未更新我的导航属性 检查代码
public ActionResult Edit(ClienteViewModel clienteViewModel)
{
if (ModelState.IsValid)
{
var cliente = Mapper.Map<Clientes>(clienteViewModel);
_context.Entry(cliente).State = EntityState.Modified;
_unitOfWork.Commit();
return RedirectToAction("Index");
}
return View(clienteViewModel);
}
有什么想法吗?
EDIT 我在编辑视图中添加了一个带有endereco.id的隐藏字段,现在Endereco.Id将转向控制器,但错误仍然相同
答案 0 :(得分:0)
如果您查看导航属性Id
的主键Endereco
,则会看到其值为Guid.Empty
00000000-0000-0000-0000-000000000000
。
因此,更新该实体将使用以下WHERE
子句生成SQL查询:
WHERE Id = '00000000-0000-0000-0000-000000000000'
当然,你的桌子上不存在带有空guid的行。
您的原始代码使用AutoMapper进行映射,因此请确保在调用以下行时正确映射所有属性:
var cliente = Mapper.Map<Clientes>(clienteViewModel);
更新:根据您的评论,您还需要确保导航属性状态更改为EntityState.Modified
(因为更改根实体的状态不会影响导航属性)如下所示:
_context.Entry(cliente.Endereco).State = EntityState.Modified;