导航属性未更新

Navigations properties are not updating

出于某种原因,我的编辑操作没有更新我的导航属性 检查代码

 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);
    }

有什么想法吗?

编辑 我在编辑视图中添加了一个带有 endereco.id 的隐藏字段,现在 Endereco.Id 将转到控制器,但错误仍然相同

如果您查看导航 属性 Endereco 的主键 Id,您会看到它的值为 Guid.Empty 00000000-0000-0000-0000-000000000000

因此,更新该实体将生成一个带有下面 WHERE 子句的 SQL 查询:

WHERE Id = '00000000-0000-0000-0000-000000000000'

当然,您的 table 中不存在带有该空 guid 的行。

您的原始代码使用 AutoMapper 进行映射,因此请确保在调用以下行时正确映射所有属性:

var cliente = Mapper.Map<Clientes>(clienteViewModel);

更新:根据您的评论,您还需要确保导航 属性 状态更改为 EntityState.Modified(因为更改根实体的状态不影响导航属性)如下所示:

_context.Entry(cliente.Endereco).State = EntityState.Modified;