gpt4 book ai didi

LINQ-TO-SQL Refresh() 在某些外部数据库更新(例如 ExecuteCommand())后不更新对象的关联

转载 作者:行者123 更新时间:2023-12-04 11:59:09 27 4
gpt4 key购买 nike

假设我有一个名为 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 Refresh() 在某些外部数据库更新(例如 ExecuteCommand())后不更新对象的关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6785480/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com