Пример #1
0
        internal override bool IsConstraintViolated()
        {
            Index childIndex = _childKey.GetSortIndex();

            object[] uniqueChildKeys = childIndex.GetUniqueKeyValues();
            bool     errors          = false;

            Index parentIndex = _parentKey.GetSortIndex();

            for (int i = 0; i < uniqueChildKeys.Length; i++)
            {
                object[] childValues = (object[])uniqueChildKeys[i];

                if (!IsKeyNull(childValues))
                {
                    if (!parentIndex.IsKeyInIndex(childValues))
                    {
                        DataRow[] rows  = childIndex.GetRows(childIndex.FindRecords(childValues));
                        string    error = SR.Format(SR.DataConstraint_ForeignKeyViolation, ConstraintName, ExceptionBuilder.KeysToString(childValues));
                        for (int j = 0; j < rows.Length; j++)
                        {
                            rows[j].RowError = error;
                        }
                        errors = true;
                    }
                }
            }
            return(errors);
        }
Пример #2
0
        internal override bool IsConstraintViolated()
        {
            bool  result = false;
            Index index  = ConstraintIndex;

            if (index.HasDuplicates)
            {
                //
                object[] uniqueKeys = index.GetUniqueKeyValues();

                for (int i = 0; i < uniqueKeys.Length; i++)
                {
                    Range r = index.FindRecords((object[])uniqueKeys[i]);
                    if (1 < r.Count)
                    {
                        DataRow[] rows  = index.GetRows(r);
                        string    error = ExceptionBuilder.UniqueConstraintViolationText(key.ColumnsReference, (object[])uniqueKeys[i]);
                        for (int j = 0; j < rows.Length; j++)
                        {
                            //
                            rows[j].RowError = error;
                            foreach (DataColumn dataColumn in key.ColumnsReference)
                            {
                                rows[j].SetColumnError(dataColumn, error);
                            }
                        }
                        // SQLBU 20011224: set_RowError for all DataRow with a unique constraint violation
                        result = true;
                    }
                }
            }
            return(result);
        }
        internal override bool IsConstraintViolated()
        {
            bool  flag            = false;
            Index constraintIndex = this.ConstraintIndex;

            if (constraintIndex.HasDuplicates)
            {
                object[] uniqueKeyValues = constraintIndex.GetUniqueKeyValues();
                for (int i = 0; i < uniqueKeyValues.Length; i++)
                {
                    Range range = constraintIndex.FindRecords((object[])uniqueKeyValues[i]);
                    if (1 < range.Count)
                    {
                        DataRow[] rows  = constraintIndex.GetRows(range);
                        string    error = ExceptionBuilder.UniqueConstraintViolationText(this.key.ColumnsReference, (object[])uniqueKeyValues[i]);
                        for (int j = 0; j < rows.Length; j++)
                        {
                            rows[j].RowError = error;
                            foreach (DataColumn column in this.key.ColumnsReference)
                            {
                                rows[j].SetColumnError(column, error);
                            }
                        }
                        flag = true;
                    }
                }
            }
            return(flag);
        }
Пример #4
0
        internal override bool IsConstraintViolated()
        {
            Index index = key.GetSortIndex();

            object[] uniqueKeys = index.GetUniqueKeyValues();
            bool     errors     = false;

            for (int i = 0; i < uniqueKeys.Length; i++)
            {
                Range     r    = index.FindRecords((object[])uniqueKeys[i]);
                DataRow[] rows = index.GetRows(r);
                if (rows.Length > 1)
                {
                    string error = ExceptionBuilder.UniqueConstraintViolationText(key.Columns, (object[])uniqueKeys[i]);
                    for (int j = 0; j < rows.Length; j++)
                    {
                        rows[j].RowError = error;
                        errors           = true;
                    }
                }
            }
            return(errors);
        }
Пример #5
0
        internal override bool CanEnableConstraint()
        {
            if (Table.DataSet == null || !Table.DataSet.EnforceConstraints)
            {
                return(true);
            }

            Index childIndex = _childKey.GetSortIndex();

            object[] uniqueChildKeys = childIndex.GetUniqueKeyValues();

            Index parentIndex = _parentKey.GetSortIndex();

            for (int i = 0; i < uniqueChildKeys.Length; i++)
            {
                object[] childValues = (object[])uniqueChildKeys[i];

                if (!IsKeyNull(childValues) && !parentIndex.IsKeyInIndex(childValues))
                {
                    return(false);
                }
            }
            return(true);
        }
Пример #6
0
        internal override bool IsConstraintViolated()
        {
            Index sortIndex = this.childKey.GetSortIndex();

            object[] uniqueKeyValues = sortIndex.GetUniqueKeyValues();
            bool     flag            = false;
            Index    index2          = this.parentKey.GetSortIndex();

            for (int i = 0; i < uniqueKeyValues.Length; i++)
            {
                object[] values = (object[])uniqueKeyValues[i];
                if (!this.IsKeyNull(values) && !index2.IsKeyInIndex(values))
                {
                    DataRow[] rows = sortIndex.GetRows(sortIndex.FindRecords(values));
                    string    str  = Res.GetString("DataConstraint_ForeignKeyViolation", new object[] { this.ConstraintName, ExceptionBuilder.KeysToString(values) });
                    for (int j = 0; j < rows.Length; j++)
                    {
                        rows[j].RowError = str;
                    }
                    flag = true;
                }
            }
            return(flag);
        }