我有一个包含员工列表的数据上下文。 我的编辑屏幕(对话框)绑定到选定的员工。当我编辑员工时,我可以在主窗口员工列表框中看到更改的详细信息,因此主列表中的员工对象正在更新。
该对话框设置为在成功调用_context.SaveChanges()后触发datacontext中Employee列表的重新查询。当数据从数据库返回时,没有保存任何新值。
值得一提的是,添加员工功能非常有效。
业务环境保存方法:
public Employee UpdateEmployee(Employee emp)
{
if (emp == null)
throw new ArgumentNullException("Employee", "Employee must be not null");
Employee temp = _context.Employees.Find(emp.Id);
_context.Employees.Attach(temp);
temp = emp;
_context.SaveChanges();
return emp;
}
临时员工对象和附加命令是绝望的举动,产生相同的结果。
答案 0 :(得分:1)
您编写的代码将提取员工,因为它在数据存储中,并将其保存到temp
。然后它将它附加到上下文(无论如何它应该已经存在)。然后它会尝试保存对temp
所做的任何更改 - 但都没有。
您是否应该附加要更新的实际实体,在本例中为emp
?
public Employee UpdateEmployee(Employee emp)
{
if (emp == null)
throw new ArgumentNullException("Employee", "Employee must be not null");
_context.Employees.Attach(emp);
_context.SaveChanges();
return emp;
}