2012-05-21 68 views
0

我在嘗試刷新Gridview中的數據時遇到問題,事情是如果我有我的應用程序正在運行,並且我更新數據庫上的某些內容新數據未刷新,但是如果我關閉了應用程序,然後重新運行,出現更改。WCF數據服務沒有刷新從數據庫更新更改

這是我在構造一段代碼:

IQueryable<GyLoadCarrier> loadCarrierQuery = queryRepository.GetGyLoadCarriers(); 

     LoadCarriersMfsTransportsLoader = new WcsDomainCollectionViewLoader<GyLoadCarrier>(loadCarrierQuery) 
     { 
      RequestTotalItemCount = true 
     }; 

     LoadCarriersMfsTransportsLoader.LoadStarted += OnLoadCarrierMfsTransportsLoaderLoadStarted; 
     LoadCarriersMfsTransportsLoader.LoadCompleted +=OnLoadCarrierMfsTransportsLoaderLoadCompleted; 

     AvailableLoadCarriers = new DomainCollectionView<GyLoadCarrier>(LoadCarriersMfsTransportsLoader, 
                     LoadCarriersMfsTransportsLoader.Data); 
     LoadCarriersMfsTransportsLoader.View = AvailableLoadCarriers; 

     INotifyCollectionChanged notifyingSortLoadCarrierDestination = AvailableLoadCarriers.SortDescriptions; 
     notifyingSortLoadCarrierDestination.CollectionChanged += (sender, e) => AvailableLoadCarriers.MoveToFirstPage(); 

     using (AvailableLoadCarriers.DeferRefresh()) 
     { 
      AvailableLoadCarriers.PageSize = 30; 
      AvailableLoadCarriers.MoveToFirstPage(); 
     } 

LoadCarriersMfsTransportsLoader.Load( 「LoadCarrierAddressChanged」);

而且刷新命令就是:

protected override void OnRefresh() 
    { 

     MfsTransportsLoader.Load(Resources.Strings.LoadingMfsTransportsProgressMessage); 
    } 

所以任何想法,爲什麼會出現這種情況?

回答

3

假設從您的客戶端使用DataServiceContext(或派生)類的同一實例運行相同的查詢兩次(在更新之前和之後),這很可能是由於MergeOption(http://msdn.microsoft.com/library/default.aspx)。 COM/EN-US /庫/ system.data.services.client.dataservicecontext.mergeoption.aspx)。 AppendOnly的默認值可防止更新應用於客戶端對象,因爲它們已存在(這不會覆蓋您可能做出的任何可能更改)。您可以通過將DataServiceContext.MergeOption設置爲OverwriteChanges來解決此問題。

+0

謝謝!有效! –