2012-05-21 67 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

谢谢!有效! –