2009-06-21 108 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