使用Silverlight 4中,是Oracle 11g,和Entity Framework 4WCF數據服務和Silverlight:化DataServiceQuery <T>不會重新執行查詢
我用化DataServiceQuery填充數據網格。然後,一些本地(非EF)代碼更新數據庫。我想使用相同的查詢來刷新更新/新數據的DataGrid。問題是,當我這樣做時,它會返回舊的原始結果。我已驗證了變化,實際上已被事先致力於DB這段代碼運行:
DataServiceContext<T> dsContext= new DataServiceContext<T>(uri);
dsContext.MergeOption = MergeOption.NoTracking;
dsContext.SaveChangesDefaultOptions = SaveChangesOptions.ReplaceOnUpdate;
DataServiceQuery<T> dsQuery = dsContext.CreateQuery<T>(typeof(T).Name);
// oldQuery is an IQueryable<T>
dsQuery = (DataServiceQuery<T>)oldQuery;
var dsQuery = (DataServiceQuery<T>)oldQuery;
dsQuery.BeginExecute(new AsyncCallback(c =>
{
IEnumerable<T> result = dsQuery.EndExecute(c);
listSelectedRecord = new List<T>();
listSelectedRecord = result.ToList();
}), dsQuery);
據我所知,新dsQuery
甚至沒有被髮送到Oracle服務器,即使盡管正在創建新的DataServiceContext
。它顯然發現它有一個緩存的副本。如果我在瀏覽器中輸入查詢,它會返回更新後的結果。
有關如何強制DS重新執行查詢的任何建議?
相關鏈接:http://forums.asp.net/t/1363040.aspx/1我已經在使用MergeOption.NoTracking標誌,如上所示。 – jordanpg 2012-04-30 19:09:30
我也注意到,如果我查看dsContext.Entities,則此DataServiceContext對象似乎根本不會跟蹤任何實體! Silverlight數據服務客戶端與.NET完整版本不同嗎? – jordanpg 2012-04-30 21:57:50