2014-03-05 43 views
0

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

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

您写的代码会提取员工,因为它在数据存储区中,并将其保存到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; 
} 
+0

附加emp执行正常,但仍然不会将更改持久化到数据库。 – Swifty

相关问题