Esempio n. 1
0
        /// <summary>
        /// 数据门户调用本接口来保存数据。
        /// </summary>
        /// <param name="component"></param>
        internal protected virtual void SubmitComposition(IDomainComponent component)
        {
            //在更新时,通知服务器更新数据版本号,并使用批量更新来提升更新的性能。
            using (VersionSyncMgr.BatchSaveScope())
            {
                //从数据门户过来的更新时,一般都是根实体时,这时需要同时更新整张表的服务端缓存版本号。
                //如果不是根实体,那也无法获取这个数据的版本号范围,所以也简单地更新整张表的版本号。
                _repository.ClientCache.UpdateServerVersion();

                this.SubmitComponent(component, true);
            }
        }
Esempio n. 2
0
        /// <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();
            }
        }