WCF数据服务没有刷新数据库更新的更改

时间:2012-05-21 16:31:39

标签: entity-framework-4 wcf-data-services

我在尝试刷新Gridview中的数据时遇到问题,问题是如果我的应用程序正在运行并且我在数据库上更新某些内容,则新数据不会刷新但是如果我关闭应用程序并再次重新运行更改出现。

以下是我在构造函数中的代码:

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);
    }

所以任何想法为什么会发生这种情况?

1 个答案:

答案 0 :(得分:3)

假设您的客户端使用相同的DataServiceContext(或派生)类实例运行相同的查询两次(更新之前和之后),这很可能是由于MergeOption(http://msdn.microsoft.com) /en-us/library/system.data.services.client.dataservicecontext.mergeoption.aspx)。 AppendOnly的默认值阻止将更新应用于客户端对象,因为它们已经存在(这不会覆盖您可能进行的任何潜在更改)。您可以通过将DataServiceContext.MergeOption设置为OverwriteChanges来解决此问题。