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); }