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

◆ MergeRelation()

void System.Data.Merger.MergeRelation ( DataRelation relation)
inlineprivate

Definition at line 428 of file Merger.cs.

429 {
430 DataRelation dataRelation = null;
431 int num = _dataSet.Relations.InternalIndexOf(relation.RelationName);
432 if (num >= 0)
433 {
435 if (relation.ParentKey.ColumnsReference.Length != dataRelation.ParentKey.ColumnsReference.Length)
436 {
438 }
439 for (int i = 0; i < relation.ParentKey.ColumnsReference.Length; i++)
440 {
441 DataColumn dataColumn = dataRelation.ParentKey.ColumnsReference[i];
442 DataColumn dataColumn2 = relation.ParentKey.ColumnsReference[i];
443 if (string.Compare(dataColumn.ColumnName, dataColumn2.ColumnName, ignoreCase: false, dataColumn.Table.Locale) != 0)
444 {
446 }
447 dataColumn = dataRelation.ChildKey.ColumnsReference[i];
448 dataColumn2 = relation.ChildKey.ColumnsReference[i];
449 if (string.Compare(dataColumn.ColumnName, dataColumn2.ColumnName, ignoreCase: false, dataColumn.Table.Locale) != 0)
450 {
452 }
453 }
454 }
455 else
456 {
457 if (MissingSchemaAction.Add != _missingSchemaAction)
458 {
459 throw ExceptionBuilder.MergeMissingDefinition(relation.RelationName);
460 }
461 DataTable dataTable = (_IgnoreNSforTableLookup ? _dataSet.Tables[relation.ParentTable.TableName] : _dataSet.Tables[relation.ParentTable.TableName, relation.ParentTable.Namespace]);
462 DataTable dataTable2 = (_IgnoreNSforTableLookup ? _dataSet.Tables[relation.ChildTable.TableName] : _dataSet.Tables[relation.ChildTable.TableName, relation.ChildTable.Namespace]);
463 DataColumn[] array = new DataColumn[relation.ParentKey.ColumnsReference.Length];
464 DataColumn[] array2 = new DataColumn[relation.ParentKey.ColumnsReference.Length];
465 for (int j = 0; j < relation.ParentKey.ColumnsReference.Length; j++)
466 {
467 array[j] = dataTable.Columns[relation.ParentKey.ColumnsReference[j].ColumnName];
468 array2[j] = dataTable2.Columns[relation.ChildKey.ColumnsReference[j].ColumnName];
469 }
470 try
471 {
472 dataRelation = new DataRelation(relation.RelationName, array, array2, relation._createConstraints);
473 dataRelation.Nested = relation.Nested;
475 }
476 catch (Exception ex) when (ADP.IsCatchableExceptionType(ex))
477 {
478 ExceptionBuilder.TraceExceptionForCapture(ex);
480 }
481 }
482 MergeExtendedProperties(relation.ExtendedProperties, dataRelation.ExtendedProperties);
483 }
static bool IsCatchableExceptionType(Exception e)
Definition ADP.cs:790
DataRelationCollection Relations
Definition DataSet.cs:393
DataTableCollection Tables
Definition DataSet.cs:396
void RaiseMergeFailed(DataTable table, string conflict, MissingSchemaAction missingSchemaAction)
Definition DataSet.cs:2593
readonly MissingSchemaAction _missingSchemaAction
Definition Merger.cs:15
void MergeExtendedProperties(PropertyCollection src, PropertyCollection dst)
Definition Merger.cs:485
bool _IgnoreNSforTableLookup
Definition Merger.cs:19
readonly DataSet _dataSet
Definition Merger.cs:9
static string DataMerge_MissingDefinition
Definition SR.cs:560
static string Format(string resourceFormat, object p1)
Definition SR.cs:118
static string DataMerge_ReltionKeyColumnsMismatch
Definition SR.cs:570
Definition SR.cs:7

References System.Data.Merger._dataSet, System.Data.Merger._IgnoreNSforTableLookup, System.Data.Merger._missingSchemaAction, System.Data.DataRelationCollection.Add(), System.array, System.SR.DataMerge_MissingDefinition, System.SR.DataMerge_ReltionKeyColumnsMismatch, System.SR.Format(), System.Data.DataRelationCollection.InternalIndexOf(), System.Data.Common.ADP.IsCatchableExceptionType(), System.Data.Merger.MergeExtendedProperties(), System.Data.ExceptionBuilder.MergeMissingDefinition(), System.Data.DataSet.RaiseMergeFailed(), System.Data.DataSet.Relations, System.Data.DataSet.Tables, and System.Data.ExceptionBuilder.TraceExceptionForCapture().

Referenced by System.Data.Merger.MergeDataSet().