可以说我有一个名为Department的实体,该实体是从MyDataContext中检索的。部门有一个名为“员工”的协会。

我想向部门添加一堆新员工。我不使用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)

最佳答案

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

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

关于linq-to-sql - 某些外部数据库更新(例如ExecuteCommand())后,LINQ-TO-SQL Refresh()不更新对象的关联,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6785480/

10-12 16:48