示例#1
0
        public List <SimpDataEntery> GetBaseTable(string tableName, object editTime, object schemaMD5, object contentsMD5)
        {
            RefreshBaseTable(tableName);
            bool      isContentsMD5Equals;                                                                                                //用来记录 判断客户端数据与服务端是否相同
            DataTable _dt            = GetBaseTableByCacheDataSets(tableName, editTime, schemaMD5, contentsMD5, out isContentsMD5Equals); //获取更新记录集
            string    _clientDelKeys = GetDeleteKeysString(tableName, editTime);                                                          //获取被删除记录 主键字符串

            bool _hasNew    = (_dt != null && _dt.Rows.Count > 0);
            bool _hasDelete = !_clientDelKeys.Equals(string.Empty);

            if (!_hasNew &&          //不存在需要更新数据
                !_hasDelete &&
                isContentsMD5Equals) //用来判断客户端数据与服务端是否相同  (客户端数据不准确情况下会出现 _hasNew=true _hasDelete=true的情况)
            {
                return(null);
            }


            List <SimpDataEntery> _lisSimp = new List <SimpDataEntery>();
            SimpDataEntery        _schemaEty, _deleteEty, _contentEty;

            _schemaEty = _deleteEty = _contentEty = null;

            if (_hasDelete)
            {
                _deleteEty = new SimpDataEntery()
                {
                    Cols = new SimpDataColInf[] { new SimpDataColInf()
                                                  {
                                                      name = DELETE_IDS_COLNAME, type = DotNetType.String
                                                  } },
                    Rows = new List <object[]>()
                    {
                        new object[] { _clientDelKeys }
                    },
                    TVal = System.DateTime.Now.Ticks
                };
            }

            _schemaEty = TableChgLog.GetBaseTableChangInfo(tableName);//不管有没有必须近观回。需要返回MD5等信息
            if (_hasNew)
            {
                _contentEty = SimpDataConvertHelper.DataTableToSimpDataEntery(_dt);
            }

            _lisSimp.Add(_schemaEty);
            _lisSimp.Add(_deleteEty);
            _lisSimp.Add(_contentEty);
            return(_lisSimp);
        }