WPF MVVM对DataContext的更改未保存到DB

时间:2014-03-05 09:24:59

标签: wpf mvvm

我有一个包含员工列表的数据上下文。 我的编辑屏幕(对话框)绑定到选定的员工。当我编辑员工时,我可以在主窗口员工列表框中看到更改的详细信息,因此主列表中的员工对象正在更新。

该对话框设置为在成功调用_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;
}

临时员工对象和附加命令是绝望的举动,产生相同的结果。

1 个答案:

答案 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;
}