使用 Silverlight 4、Oracle 11g 和实体框架 4。
我使用 DataServiceQuery 来填充 DataGrid。然后,一些本地(非 EF)代码更新数据库。我想使用相同的查询来用更新/新数据刷新 DataGrid。问题是,当我这样做时,它会返回旧的原始结果。我已经验证了这些更改实际上已在此代码运行之前提交到数据库:
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 重新执行查询的任何建议?