假设我的数据库中有一个Orders表,并且VS2008"Linq to SQL Classes"设计器生成了相应的模型类.假设我的ProcessOrder数据库中还有一个存储过程(),用于对订单记录进行一些处理.
如果我执行以下操作:
var order = dataContext.Orders.Where(o => o.id == orderId).First();
// More code here
dataContext.ProcessOrder(orderId);
order.Status = "PROCESSED";
dataContext.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)
...如果ProcessOrder存储过程修改了订单(当然很可能),我会得到并发冲突,因为L2S会检测到订单记录已经改变,并且无法将更改提交给该订单.
这一切都很合理,但是如果我想在调用存储过程后更新订单记录呢?如何告诉L2S忘记其缓存副本并从数据库中刷新它?
Kla*_*sen 16
您可以使用Refresh数据上下文中的方法来执行此操作,如下所示:
DataContext.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues,
DataContext.Orders);
Run Code Online (Sandbox Code Playgroud)