Silverlight 4、Oracle 11g、およびEntityFramework4を使用します。
DataServiceQueryを使用してDataGridを埋めます。次に、いくつかのローカル(非EF)コードがDBを更新します。同じクエリを使用して、更新された/新しいデータで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
ていても、新しいものDataServiceContext
はOracleサーバーに送信されていません。どこかにキャッシュされたコピーがあることを明らかに発見しています。ブラウザにクエリを入力すると、更新された結果が返されます。
DSにクエリを再実行させる方法に関する提案はありますか?