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

◆ CascadeUpdate()

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

Definition at line 425 of file ForeignKeyConstraint.cs.

426 {
427 if (-1 == row._newRecord)
428 {
429 return;
430 }
431 object[] keyValues = row.GetKeyValues(_parentKey, DataRowVersion.Current);
432 if (!Table.DataSet._fInReadXml && IsKeyNull(keyValues))
433 {
434 return;
435 }
436 Index sortIndex = _childKey.GetSortIndex();
437 switch (UpdateRule)
438 {
439 case Rule.None:
440 if (row.Table.DataSet.EnforceConstraints && !sortIndex.FindRecords(keyValues).IsNull)
441 {
442 throw ExceptionBuilder.FailedCascadeUpdate(ConstraintName);
443 }
444 break;
445 case Rule.Cascade:
446 {
447 Range range3 = sortIndex.FindRecords(keyValues);
448 if (!range3.IsNull)
449 {
450 object[] keyValues2 = row.GetKeyValues(_parentKey, DataRowVersion.Proposed);
451 DataRow[] rows3 = sortIndex.GetRows(range3);
452 for (int m = 0; m < rows3.Length; m++)
453 {
454 rows3[m].SetKeyValues(_childKey, keyValues2);
455 }
456 }
457 break;
458 }
459 case Rule.SetNull:
460 {
461 object[] array2 = new object[_childKey.ColumnsReference.Length];
462 for (int k = 0; k < _childKey.ColumnsReference.Length; k++)
463 {
464 array2[k] = DBNull.Value;
465 }
466 Range range2 = sortIndex.FindRecords(keyValues);
467 if (!range2.IsNull)
468 {
469 DataRow[] rows2 = sortIndex.GetRows(range2);
470 for (int l = 0; l < rows2.Length; l++)
471 {
472 rows2[l].SetKeyValues(_childKey, array2);
473 }
474 }
475 break;
476 }
477 case Rule.SetDefault:
478 {
479 object[] array = new object[_childKey.ColumnsReference.Length];
480 for (int i = 0; i < _childKey.ColumnsReference.Length; i++)
481 {
483 }
484 Range range = sortIndex.FindRecords(keyValues);
485 if (!range.IsNull)
486 {
487 DataRow[] rows = sortIndex.GetRows(range);
488 for (int j = 0; j < rows.Length; j++)
489 {
490 rows[j].SetKeyValues(_childKey, array);
491 }
492 }
493 break;
494 }
495 }
496 }
virtual string ConstraintName
Definition Constraint.cs:24
Index GetSortIndex()
Definition DataKey.cs:184
DataColumn[] ColumnsReference
Definition DataKey.cs:7

References System.Data.ForeignKeyConstraint._childKey, System.Data.DataSet._fInReadXml, System.Data.DataRow._newRecord, System.Data.ForeignKeyConstraint._parentKey, System.array, System.Data.DataKey.ColumnsReference, System.Data.Constraint.ConstraintName, System.Data.DataTable.DataSet, System.Data.DataColumn.DefaultValue, System.Data.DataSet.EnforceConstraints, System.Data.ExceptionBuilder.FailedCascadeUpdate(), System.Data.Index.FindRecords(), System.Data.DataRow.GetKeyValues(), System.Data.Index.GetRows(), System.Data.DataKey.GetSortIndex(), System.Data.ForeignKeyConstraint.IsKeyNull(), System.Data.Range.IsNull, System.Data.DataRow.SetKeyValues(), System.Data.DataRow.Table, System.Data.ForeignKeyConstraint.Table, System.Data.ForeignKeyConstraint.UpdateRule, and System.DBNull.Value.

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