LINQ-TO-SQL Refresh()不更新对象';在某些外部数据库更新(如ExecuteCommand()后)后,删除关联

LINQ-TO-SQL Refresh()不更新对象';在某些外部数据库更新(如ExecuteCommand()后)后,删除关联,linq-to-sql,Linq To Sql,假设我有一个从MyDataContext检索到的名为Department的实体。该部门有一个名为“雇员”的协会 我想给一个部门增加一批新员工。与使用LINQ(这将导致多个查询)不同,我使用以下方法执行一次批量插入: MyDataContext.ExcecuteCommand( "Insert INTO Employee (DeptID, etc…), (DeptID, etc…), (DeptID, etc…)" ); 现在,我的Department对象对这些更改一无所知,特别是Employe

假设我有一个从MyDataContext检索到的名为Department的实体。该部门有一个名为“雇员”的协会

我想给一个部门增加一批新员工。与使用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.Employees.Count()=3

如何在不使用新DataContext的情况下更新MyDataContext或现有部门实体


(我在整个请求中使用一个DataContext,并使用它执行多个不同的数据操作,因此很难尝试引入另一个DataContext)

不幸的是,根据,Refresh()不会重新加载关联。建议的解决办法是:

Department.Employees.Clear();
Department.Employees.AddRange(MyContext.Employees.Where(x=>x.DeptID=Department.DeptID))

这几天我一直在想办法。非常感谢。