Ejemplo n.º 1
0
        private void RemoveDeletedRemoteEntriesToLocal(SDSchemaObject data)
        {
            var removedTables = _efContext.SDStatuses
                                .Where(s => !data.SDDataTables.Any(t => t.Id == s.Id))
                                .Select(s => _efContext.SDDataTables.SingleOrDefault(t => t.Id == s.Id))
                                .Where(s => s != null)
                                .ToList();

            var removedColumns = _efContext.SDStatuses
                                 .Where(s => !data.SDDataTables.SelectMany(t => t.Columns).Any(c => c.Id == s.Id))
                                 .Select(i => _efContext.SDColumns.SingleOrDefault(c => c.Id == i.Id))
                                 .Where(i => i != null)
                                 .Where(c => !removedTables.Any(t => t.Id != c.SDDataTableId))
                                 .ToList();

            foreach (var table in removedTables)
            {
                _dbTableRepository.Remove(table);
                _efContext.SDDataTables.Remove(table);
                _efContext.SDStatuses.Remove(new SDStatus(table.Id));
                _efContext.SDStatuses.RemoveRange(table.Columns.Select(c => new SDStatus(c.Id)));
            }
            foreach (var column in removedColumns)
            {
                var tableName = _efContext.SDDataTables.Single(t => t.Id == column.SDDataTableId).Name;
                _dbTableRepository.RemoveColumn(tableName, column);
                _efContext.SDColumns.Remove(column);
                _efContext.SDStatuses.Remove(new SDStatus(column.Id));
            }
            _efContext.SaveChanges();
        }
Ejemplo n.º 2
0
        public void RemoveTable(SDDataTable table)
        {
            dbTableRepository.Remove(table);
            context.SDDataTables.Remove(table);

            // TODO: Sync

            // IF Sync Successfull
            //context.SDStatuses.Remove(new SDStatus(table.Id));
            //foreach (var column in table.Columns)
            //{
            //    context.SDStatuses.Remove(new SDStatus(column.Id));
            //}
        }