/// <summary> /// 数据门户调用本接口来保存数据。 /// </summary> /// <param name="component"></param> internal protected virtual void SubmitComposition(IDomainComponent component) { //在更新时,通知服务器更新数据版本号,并使用批量更新来提升更新的性能。 using (VersionSyncMgr.BatchSaveScope()) { //从数据门户过来的更新时,一般都是根实体时,这时需要同时更新整张表的服务端缓存版本号。 //如果不是根实体,那也无法获取这个数据的版本号范围,所以也简单地更新整张表的版本号。 _repository.ClientCache.UpdateServerVersion(); this.SubmitComponent(component, true); } }
/// <summary> /// 数据门户调用本接口来保存数据。 /// </summary> /// <param name="component"></param> public virtual void SubmitComposition(IDomainComponent component) { //以下事务代码,不需要区分是否使用分布式缓存的情况来做事务处理, //而是直接使用 SingleConnectionTransactionScope 类来管理不同数据库的事务, //因为这个类会保证不同的库使用不同的事务。 using (var tran = new SingleConnectionTrasactionScope(this.DbSetting)) { //在更新时,通知服务器更新数据版本号,并使用批量更新来提升更新的性能。 using (VersionSyncMgr.BatchSaveScope()) { //从数据门户过来的更新时,一般都是根实体时,这时需要同时更新整张表的服务端缓存版本号。 //如果不是根实体,那也无法获取这个数据的版本号范围,所以也简单地更新整张表的版本号。 _repository.ClientCache.UpdateServerVersion(); this.SubmitComponent(component, true); } //最后提交事务。前面的代码,如果出现异常,则会回滚整个事务。 tran.Complete(); } }