WCF RIA Services EntitySet 在Silverlight端的缓存问题
2012-03-16 11:29 starlet 阅读(458) 评论(0) 编辑 收藏 举报//问题在子窗体中修改实体EdsNonstandardTaskItem的值,并保存数据库后,关闭子窗体刷新父页面数据 //客户端调用方法如下 var loadOp = _edsSoDC.Load<EdsNonstandardTaskItem>(_edsSoDC.GetEdsNonstandardTaskItemByContractGuidQuery(contractBaseInfo.ContractGuid)); //Load后,通过调试,服务端已经将数据修改提交的数据库,且服务端的GetEdsNonstandardTaskItemByContractGuid方法确实返回了最新的数据。然而,客户端_edsSoDC.EdsNonstandardTaskItem中的数据仍为修改前的数据。缓存问题 //解决方法: //方法一: //Load前将客户端的实体集合清空 _edsSoDC.EdsNonstandardTaskItems.Clear(); //方法二: //对Load的方法进行修改 var loadOp = _edsSoDC.Load<EdsNonstandardTaskItem>(_edsSoDC.GetEdsNonstandardTaskItemByContractGuidQuery(contractBaseInfo.ContractGuid), LoadBehavior.RefreshCurrent, false); //需要引入using System.ServiceModel.DomainServices.Client; //LoadBehavior参考//
//指定加载实体时控制标识缓存行为。
//
//KeepCurrent
//缓存的实例未更改,且新读取的实例被丢弃。
//MergeIntoCurrent
//新读取实例的值将合并至属性值未修改的缓存实例。更改在该合并中不会丢失。
//RefreshCurrent
//将用来自新读取实例的当前值重写缓存实例的所有成员,无论这些值是否已修改。此外,实体的原始状///态还会设置成新读取实例。