假设我有一个名为Department的实体,我是从MyDataContext检索的。 Department有一个名为Employees的协会。
我想在部门添加一堆新员工。我没有使用会导致多个查询的LINQ,而是使用:
进行一次批量插入MyDataContext.ExcecuteCommand(
"Insert INTO Employee (DeptID, etc…), (DeptID, etc…), (DeptID, etc…)"
);
现在我的Department对象对这些更改一无所知,特别是Employees属性,因为Department.Employees.Count()返回0
我已尝试以下两项操作来刷新以更新部门及其相关的员工:
MyDataContext.Refresh(RefreshMode.OverwriteCurrentValues, Department);
MyDataContext.Refresh(RefreshMode.OverwriteCurrentValues, Department.Employees);
但仍然是Department.Employees.Count()返回0
我知道数据实际上已正确添加,因为如果我创建一个新的DataContext并获取Department实体,则Department.Employees.Count()= 3
如何在不使用新的DataContext的情况下更新MyDataContext或现有的Department实体?
(我在整个请求中使用一个DataContext,并使用它执行几个不同的数据操作,因此很难尝试引入另一个DataContext)
答案 0 :(得分:7)
不幸的是,根据this post,Refresh()不会重新加载关联。建议的解决方法是:
Department.Employees.Clear();
Department.Employees.AddRange(MyContext.Employees.Where(x=>x.DeptID=Department.DeptID))