代码之家  ›  专栏  ›  技术社区  ›  Gary McGill

如何让Linq to SQL刷新其数据库记录的本地副本?

  •  6
  • Gary McGill  · 技术社区  · 14 年前

    假设我的数据库中有一个ORDERS表和一个由VS2008“LinqtoSQL类”设计器生成的相应模型类。假设我还有一个存储过程( ProcessOrder )在我的数据库中,我用来处理订单记录。

    如果我执行以下操作:

    var order = dataContext.Orders.Where(o => o.id == orderId).First();
    
    // More code here
    
    dataContext.ProcessOrder(orderId);
    
    order.Status = "PROCESSED";
    
    dataContext.SubmitChanges();
    

    …然后如果 源节点 存储过程修改了订单(当然很可能),因为L2S会检测到订单记录已更改,并且无法将更改提交给该订单。

    这很合乎逻辑,但如果我 希望 要在调用存储过程后更新订单记录吗?如何告诉L2S忘记缓存副本并从数据库刷新它?

    1 回复  |  直到 14 年前
        1
  •  16
  •   Klaus Byskov Pedersen    14 年前

    你可以用 Refresh 数据上下文中的方法,如:

    DataContext.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues,
                        DataContext.Orders);