Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ CascadeRollback()

void System.Data.ForeignKeyConstraint.CascadeRollback ( DataRow row)
inlinepackage

Definition at line 395 of file ForeignKeyConstraint.cs.

396 {
397 Index sortIndex = _childKey.GetSortIndex((row.RowState == DataRowState.Deleted) ? DataViewRowState.OriginalRows : DataViewRowState.CurrentRows);
398 object[] keyValues = row.GetKeyValues(_parentKey, (row.RowState == DataRowState.Modified) ? DataRowVersion.Current : DataRowVersion.Default);
399 if (IsKeyNull(keyValues))
400 {
401 return;
402 }
403 Range range = sortIndex.FindRecords(keyValues);
404 if (_acceptRejectRule == AcceptRejectRule.Cascade)
405 {
406 if (range.IsNull)
407 {
408 return;
409 }
410 DataRow[] rows = sortIndex.GetRows(range);
411 for (int i = 0; i < rows.Length; i++)
412 {
413 if (!rows[i]._inCascade)
414 {
415 rows[i].RejectChanges();
416 }
417 }
418 }
419 else if (row.RowState != DataRowState.Deleted && row.Table.DataSet.EnforceConstraints && !range.IsNull && (range.Count != 1 || sortIndex.GetRow(range.Min) != row) && row.HasKeyChanged(_parentKey))
420 {
421 throw ExceptionBuilder.FailedCascadeUpdate(ConstraintName);
422 }
423 }
virtual string ConstraintName
Definition Constraint.cs:24
Index GetSortIndex()
Definition DataKey.cs:184

References System.Data.ForeignKeyConstraint._acceptRejectRule, System.Data.ForeignKeyConstraint._childKey, System.Data.ForeignKeyConstraint._parentKey, System.Data.Constraint.ConstraintName, System.Data.Range.Count, System.Data.DataTable.DataSet, System.Data.DataSet.EnforceConstraints, System.Data.ExceptionBuilder.FailedCascadeUpdate(), System.Data.Index.FindRecords(), System.Data.DataRow.GetKeyValues(), System.Data.Index.GetRow(), System.Data.Index.GetRows(), System.Data.DataKey.GetSortIndex(), System.Data.DataRow.HasKeyChanged(), System.Data.ForeignKeyConstraint.IsKeyNull(), System.Data.Range.IsNull, System.Data.Range.Min, System.Data.DataRow.RejectChanges(), System.Data.DataRow.RowState, and System.Data.DataRow.Table.

Referenced by System.Data.ForeignKeyConstraint.CheckCascade().