示例#1
0
        public DataSet Save(Dictionary <string, LibChangeRecord> changeRecord, Dictionary <string, string> extendParam = null)
        {
            if (extendParam != null && extendParam.Count != 0)
            {
                foreach (var item in extendParam)
                {
                    ExtendBcfParam[item.Key] = JsonConvert.DeserializeObject(extendParam[item.Key], RegisterBcfParamType[item.Key]);
                }
            }
            this.DataSet = (DataSet)LibBillDataCache.Default.Get(this.ProgId);
            DataSetManager.ChangeDataHandle(this.DataSet, changeRecord, this.ManagerMessage);
            LibBillDataCache.Default.AddBillData(this.ProgId, this.DataSet);
            LibDBTransaction trans = this.DataAccess.BeginTransaction();

            try
            {
                CheckDataHelper.CheckData(this);
                this.BeforeUpdate();
                DataSetManager.SubmitData(this.DataSet, this.DataAccess);
                this.AfterUpdate();
                if (this.ManagerMessage.IsThrow)
                {
                    trans.Rollback();
                    this.DataSet.RejectChanges();
                    LibBillDataCache.Default.AddBillData(this.ProgId, this.DataSet);
                }
                else
                {
                    trans.Commit();
                    LibBillDataCache.Default.Remove(this.ProgId);
                }
            }
            catch
            {
                trans.Rollback();
                this.DataSet.RejectChanges();
                LibBillDataCache.Default.AddBillData(this.ProgId, this.DataSet);
                throw;
            }
            this.AfterCommintData();
            this.AfterChangeData(this.DataSet);
            this.DataSet.AcceptChanges();
            return(this.DataSet);
        }