Ejemplo n.º 1
0
        public void SetMergeDirection(a7DbComparerDirection direction, bool fromTableComparer)
        {
            if (!IsDifferent)
            {
                MergeDirection = a7DbComparerDirection.None;
                SQL            = "";
                OnPropChanged("MergeDirection");
                return;
            }

            MergeDirection = direction;
            if (!fromTableComparer)
            {
                _tblComparer.RefreshMergeDirection();
            }
            if (direction == a7DbComparerDirection.None)
            {
                SQL = "";
            }
            else if (direction == a7DbComparerDirection.AtoB)
            {
                SQL = getMergeQuery(_tblComparer.DbAName, _dataRowA, _tblComparer.DbBName, _dataRowB, _tblComparer.PrimaryKeyColumnsB, _tblComparer.ColumnsB, _tblComparer.ColumnsA);
            }
            else if (direction == a7DbComparerDirection.BtoA)
            {
                SQL = getMergeQuery(_tblComparer.DbBName, _dataRowB, _tblComparer.DbAName, _dataRowA, _tblComparer.PrimaryKeyColumnsA, _tblComparer.ColumnsA, _tblComparer.ColumnsB);
            }
            OnPropChanged("MergeDirection");
        }
Ejemplo n.º 2
0
        public async Task SetMergeDirection(a7DbComparerDirection direction)
        {
            if (this.Tables == null)
            {
                return;
            }

            MergeDirection = direction;
            if (direction != a7DbComparerDirection.Partial)
            {
                await Task.WhenAll(Tables.Where(t => t.IsOK)
                                   .Select(t => t.SetMergeDirection(direction, true)));
            }
            OnPropertyChanged(nameof(MergeDirection));
        }
Ejemplo n.º 3
0
        public async Task SetMergeDirection(a7DbComparerDirection direction, bool isFromDbComparer = false)
        {
            if (this.Rows == null)
            {
                await AnalyzeTable();
            }

            MergeDirection = direction;
            if (!isFromDbComparer)
            {
                _comparer.RefreshMergeDirection();
            }
            if (direction != a7DbComparerDirection.Partial)
            {
                foreach (var row in Rows)
                {
                    if (direction == a7DbComparerDirection.None)
                    {
                        row.SetMergeDirection(direction, true);
                    }
                    else if (direction == a7DbComparerDirection.AtoB)
                    {
                        if (row.IsOnlyInB && !MergeWithDelete)
                        {
                            row.SetMergeDirection(a7DbComparerDirection.None, true);
                        }
                        else
                        {
                            row.SetMergeDirection(direction, true);
                        }
                    }
                    else if (direction == a7DbComparerDirection.BtoA)
                    {
                        if (row.IsOnlyInA && !MergeWithDelete)
                        {
                            row.SetMergeDirection(a7DbComparerDirection.None, true);
                        }
                        else
                        {
                            row.SetMergeDirection(direction, true);
                        }
                    }
                }
            }
            OnPropertyChanged(nameof(MergeDirection));
        }