2009-06-21 87 views
1

我的应用程序是使用ADO.NET数据服务的客户端/服务器解决方案。数据服务暴露transactionSummaryData如下:ADO.NET数据服务不动态更新

public IQueryable<TransactionSummary> TransactionSummaries 
{ 
    get { return MainForm.transactionSummaryData.Items.AsQueryable(); } 
} 

的transactionSummaryData是类型TransactionSummaries其项目属性被定义为如下的:

public List<TransactionSummary> Items 

在客户端,我有一些控制数据绑定到LINQ查询该工程对TransactionSummaries:

AvailibilityBox.DataContext = (from salesdata in srv.TransactionSummaries 
           where salesdata.PerformanceID == selectedshow.performancedata.PerformanceID 
           select salesdata); 

这被执行多次在selectedshow.performancedata.PerformanceID变化对用户导航UI的响应。

目前为止都不错。但是,当服务器上的transactionSummaryData由服务器内的其他代码更新时,客户端将继续显示“陈旧”数据,但不会注意到该更新。我认为这是由于某种缓存。对代码进行调试后,我可以看到服务器发送正确的数据,但客户端上的LINQ查询继续返回陈旧的数据。重新启动客户端会导致显示正确的数据。

我想我在这里错过了一些明显的东西,但我看不到如何控制客户端上的任何缓存或使对象无效而无需重新建立连接。

回答

1

埃姆雷梅里克设法回答我的问题:

的DataServiceContext默认合并选项AppendOnly,也就是说,如果一个实体被退回查询已被上下文跟踪,不会对其进行更改。如果您希望始终从持久存储更新实体,则可以将MergeOption设置为OverwriteChanges。

MSDN Reference