C# 如何刷新LINQ到实体查询
我有以下LINQ to实体代码:C# 如何刷新LINQ到实体查询,c#,linq-to-entities,C#,Linq To Entities,我有以下LINQ to实体代码: var vans = from v in objDB.vans.Include("van_assignments.pickup_requests.to_location") .Include("van_assignments.pickup_requests.from_location") .Include("van_assignments.
var vans = from v in objDB.vans.Include("van_assignments.pickup_requests.to_location")
.Include("van_assignments.pickup_requests.from_location")
.Include("van_assignments.pickup_requests.person")
.Include("school")
select v;
gcVans.DataSource = vans;
现在,在另一种方法(即刷新按钮)中,我需要在对远程数据库进行更改时刷新该查询
我尝试再次调用上述代码,但它不会刷新数据。有人知道强制LINQ to实体从远程数据库刷新的最佳实践吗
编辑:稍加涉猎后,会导致车辆信息更新。但是,使用.include()函数加载的所有外键数据都不会更新。有人知道为什么吗
var vans = from v in objDB.vans.Include("van_assignments.pickup_requests.to_location")
.Include("van_assignments.pickup_requests.from_location")
.Include("van_assignments.pickup_requests.person")
.Include("school")
select v;
objDB.Refresh(RefreshMode.StoreWins, vans);
gcVans.RefreshDataSource();
听起来你用错了 默认值
AppendOnly
,尝试保留客户端更改,刷新时不会覆盖。也许您想要覆盖更改
?这样您就不需要调用刷新
要设置此选项,请执行以下操作:
(vans as ObjectQuery).MergeOption = MergeOption.OverwriteChanges;
它不会用该代码刷新。此外,我还更新了一些新信息。你有什么想法吗?如果你删除“from v in”和“select v”部分,它会有什么不同吗?谢谢,你能提供一个我将如何使用合并选项的示例吗?我添加了一个示例。在枚举结果之前执行此操作。添加此操作将导致在我调用objDB.refresh(RefreshMode.StoreWins,vans)时从服务器刷新LINQ to实体?再次感谢您抽出时间!否,添加它将导致查询返回新对象,而不是将结果修复为内存中已有的值。