分类目录

链接

2012年三月
« 2月   4月 »
 1234
567891011
12131415161718
19202122232425
262728293031  

近期文章

热门标签

博主推荐

现在位置:    首页 > .NET > 正文
LINQ强制更新数据
.NET 暂无评论 阅读(2,416)

最近一项目里使用LINQ时,我一后台线程修改数据后,前台窗体总是得不到最新的数据。无解。

查看了获取数据的数据层,是NEW的DB应该是最新的,怎么会出现这个问题呢。

百度之后说用DB.REFRESH,强制更新,结果不是不行。我开始怀疑是后台线程的问题,结果果然发现是线程只执行了一次,没有加循环,我勒个去!

  1. #region 后台作废订单
  2.         private void OrderUpdateThread()
  3.         {
  4.             System.Threading.Thread orderThread = new System.Threading.Thread(CanceledOrders);
  5.             orderThread.Start();
  6.         }
  7.  
  8.         private void CanceledOrders()
  9.         {
  10.             while (true)
  11.             {
  12.                 try
  13.                 {
  14.                     using (DB.DBJewelryRetailDataContext db = new DBJewelryRetailDataContext())
  15.                     {
  16.                         List<DB.RetailOrder> orders = db.RetailOrder.Where(=>
  17.                             f.fDate.AddMinutes(30) <= DateTime.Now &&
  18.                             f.fGatheringState == Enums.GatheringState.Unreceived&&
  19.                             f.fIsDelete == false
  20.                             ).ToList();
  21.                         DB.InOutVouch inoutVouch = null;
  22.  
  23.                         foreach (DB.RetailOrder retail in orders)
  24.                         {
  25.                             //作废订单
  26.                             retail.fIsDelete = true;
  27.  
  28.                             //作废收款单 
  29.                             DB.GatheringVouch gv = db.GatheringVouch.FirstOrDefault(=> f.fchrID == retail.fOrderID);
  30.                             if (gv != null)
  31.                             {
  32.                                 gv.fIsDeleted = true;
  33.                             }
  34.  
  35.                             //删除出入库单,恢复库存
  36.                             inoutVouch = db.InOutVouch.FirstOrDefault(=> f.fchrBusinessID == retail.fOrderID);
  37.                             db.InOutVouchDetail.DeleteAllOnSubmit(inoutVouch.InOutVouchDetail);
  38.                             db.InOutVouch.DeleteOnSubmit(inoutVouch);
  39.                         }
  40.  
  41.                         //提交
  42.                         db.SubmitChanges();
  43.  
  44.                         //1分钟刷新一次
  45.                         System.Threading.Thread.Sleep(60000);
  46.                     }
  47.                 }
  48.                 catch(Exception)
  49.                 { 
  50.                 }
  51.             }
  52.         }
  53.         #endregion

本文版权归数据库之家所有,转载引用请完整注明以下信息:
本文作者:Bruce
本文地址:LINQ强制更新数据 | 数据库之家

发表评论

留言无头像?