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

◆ Add() [2/6]

void System.Data.ConstraintCollection.Add ( Constraint constraint,
bool addUniqueWhenAddingForeign )
inlinepackage

Definition at line 79 of file ConstraintCollection.cs.

80 {
81 if (constraint == null)
82 {
83 throw ExceptionBuilder.ArgumentNull("constraint");
84 }
85 Constraint constraint2 = FindConstraint(constraint);
86 if (constraint2 != null)
87 {
88 throw ExceptionBuilder.DuplicateConstraint(constraint2.ConstraintName);
89 }
90 if (1 < _table.NestedParentRelations.Length && !AutoGenerated(constraint))
91 {
92 throw ExceptionBuilder.CantAddConstraintToMultipleNestedTable(_table.TableName);
93 }
94 if (constraint is UniqueConstraint)
95 {
96 if (((UniqueConstraint)constraint)._bPrimaryKey && Table._primaryKey != null)
97 {
98 throw ExceptionBuilder.AddPrimaryKeyConstraint();
99 }
100 AddUniqueConstraint((UniqueConstraint)constraint);
101 }
102 else if (constraint is ForeignKeyConstraint)
103 {
104 ForeignKeyConstraint foreignKeyConstraint = (ForeignKeyConstraint)constraint;
105 if (addUniqueWhenAddingForeign)
106 {
107 UniqueConstraint uniqueConstraint = foreignKeyConstraint.RelatedTable.Constraints.FindKeyConstraint(foreignKeyConstraint.RelatedColumnsReference);
108 if (uniqueConstraint == null)
109 {
110 if (constraint.ConstraintName.Length == 0)
111 {
112 constraint.ConstraintName = AssignName();
113 }
114 else
115 {
116 RegisterName(constraint.ConstraintName);
117 }
118 uniqueConstraint = new UniqueConstraint(foreignKeyConstraint.RelatedColumnsReference);
119 foreignKeyConstraint.RelatedTable.Constraints.Add(uniqueConstraint);
120 }
121 }
122 AddForeignKeyConstraint((ForeignKeyConstraint)constraint);
123 }
124 BaseAdd(constraint);
125 ArrayAdd(constraint);
127 if (constraint is UniqueConstraint && ((UniqueConstraint)constraint)._bPrimaryKey)
128 {
129 Table.PrimaryKey = ((UniqueConstraint)constraint).ColumnsReference;
130 }
131 }
void BaseAdd(Constraint constraint)
void AddUniqueConstraint(UniqueConstraint constraint)
bool AutoGenerated(Constraint constraint)
void AddForeignKeyConstraint(ForeignKeyConstraint constraint)
void OnCollectionChanged(CollectionChangeEventArgs ccevent)
void ArrayAdd(Constraint constraint)
Constraint FindConstraint(Constraint constraint)
UniqueConstraint _primaryKey
Definition DataTable.cs:124
DataRelation[] NestedParentRelations
Definition DataTable.cs:586

References System.Data.DataTable._primaryKey, System.Data.ConstraintCollection._table, System.Data.ConstraintCollection.Add(), System.Data.ConstraintCollection.AddForeignKeyConstraint(), System.Data.ExceptionBuilder.AddPrimaryKeyConstraint(), System.Data.ConstraintCollection.AddUniqueConstraint(), System.Data.ExceptionBuilder.ArgumentNull(), System.Data.ConstraintCollection.ArrayAdd(), System.Data.ConstraintCollection.AssignName(), System.Data.ConstraintCollection.AutoGenerated(), System.Data.ConstraintCollection.BaseAdd(), System.Data.ExceptionBuilder.CantAddConstraintToMultipleNestedTable(), System.Data.Constraint.ConstraintName, System.Data.DataTable.Constraints, System.Data.ExceptionBuilder.DuplicateConstraint(), System.Data.ConstraintCollection.FindConstraint(), System.Data.ConstraintCollection.FindKeyConstraint(), System.Data.DataTable.NestedParentRelations, System.Data.ConstraintCollection.OnCollectionChanged(), System.Data.ConstraintCollection.RegisterName(), System.Data.ForeignKeyConstraint.RelatedColumnsReference, System.Data.ForeignKeyConstraint.RelatedTable, System.Data.ConstraintCollection.Table, and System.Data.DataTable.TableName.