微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

假设我有一个名为Department的实体,我是从MyDataContext检索的. Department有一个名为Employees的协会.

我想在一个部门添加一堆新员工.而不是使用LINQ,这将导致多个查询,我做一个批量插入:

MyDataContext.ExcecuteCommand(
"Insert INTO Employee (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))

原文地址:https://www.jb51.cc/mssql/77127.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐