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

◆ MergeSchema()

DataTable System.Data.Merger.MergeSchema ( DataTable table)
inlineprivate

Definition at line 263 of file Merger.cs.

264 {
265 DataTable dataTable = null;
267 {
268 if (_dataSet.Tables.Contains(table.TableName, caseSensitive: true))
269 {
270 dataTable = ((!_IgnoreNSforTableLookup) ? _dataSet.Tables[table.TableName, table.Namespace] : _dataSet.Tables[table.TableName]);
271 }
272 }
273 else
274 {
276 }
277 if (dataTable == null)
278 {
279 if (MissingSchemaAction.Add == _missingSchemaAction)
280 {
281 dataTable = table.Clone(table.DataSet);
283 }
284 else if (MissingSchemaAction.Error == _missingSchemaAction)
285 {
286 throw ExceptionBuilder.MergeMissingDefinition(table.TableName);
287 }
288 }
289 else
290 {
291 if (MissingSchemaAction.Ignore != _missingSchemaAction)
292 {
293 int count = dataTable.Columns.Count;
294 for (int i = 0; i < table.Columns.Count; i++)
295 {
296 DataColumn dataColumn = table.Columns[i];
297 DataColumn dataColumn2 = (dataTable.Columns.Contains(dataColumn.ColumnName, caseSensitive: true) ? dataTable.Columns[dataColumn.ColumnName] : null);
298 if (dataColumn2 == null)
299 {
300 if (MissingSchemaAction.Add == _missingSchemaAction)
301 {
302 dataColumn2 = dataColumn.Clone();
303 dataTable.Columns.Add(dataColumn2);
304 continue;
305 }
307 {
309 continue;
310 }
311 throw ExceptionBuilder.MergeFailed(System.SR.Format(System.SR.DataMerge_MissingColumnDefinition, table.TableName, dataColumn.ColumnName));
312 }
313 if (dataColumn2.DataType != dataColumn.DataType || (dataColumn2.DataType == typeof(DateTime) && dataColumn2.DateTimeMode != dataColumn.DateTimeMode && (dataColumn2.DateTimeMode & dataColumn.DateTimeMode) != DataSetDateTime.Unspecified))
314 {
316 {
317 throw ExceptionBuilder.MergeFailed(System.SR.Format(System.SR.DataMerge_DataTypeMismatch, dataColumn.ColumnName));
318 }
320 }
321 MergeExtendedProperties(dataColumn.ExtendedProperties, dataColumn2.ExtendedProperties);
322 }
324 {
325 for (int j = count; j < dataTable.Columns.Count; j++)
326 {
327 dataTable.Columns[j].CopyExpressionFrom(table.Columns[dataTable.Columns[j].ColumnName]);
328 }
329 }
330 DataColumn[] primaryKey = dataTable.PrimaryKey;
331 DataColumn[] primaryKey2 = table.PrimaryKey;
332 if (primaryKey.Length != primaryKey2.Length)
333 {
334 if (primaryKey.Length == 0)
335 {
336 DataColumn[] array = new DataColumn[primaryKey2.Length];
337 for (int k = 0; k < primaryKey2.Length; k++)
338 {
339 array[k] = dataTable.Columns[primaryKey2[k].ColumnName];
340 }
341 dataTable.PrimaryKey = array;
342 }
343 else if (primaryKey2.Length != 0)
344 {
346 }
347 }
348 else
349 {
350 for (int l = 0; l < primaryKey.Length; l++)
351 {
352 if (string.Compare(primaryKey[l].ColumnName, primaryKey2[l].ColumnName, ignoreCase: false, dataTable.Locale) != 0)
353 {
355 }
356 }
357 }
358 }
359 MergeExtendedProperties(table.ExtendedProperties, dataTable.ExtendedProperties);
360 }
361 return dataTable;
362 }
bool ICollection< KeyValuePair< TKey, TValue > >. Contains(KeyValuePair< TKey, TValue > keyValuePair)
void Add(TKey key, TValue value)
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
readonly bool _isStandAlonetable
Definition Merger.cs:17
readonly DataTable _dataTable
Definition Merger.cs:11
static string DataMerge_PrimaryKeyColumnsMismatch
Definition SR.cs:568
static string Format(string resourceFormat, object p1)
Definition SR.cs:118
static string DataMerge_DataTypeMismatch
Definition SR.cs:564
static string DataMerge_MissingColumnDefinition
Definition SR.cs:572
static string DataMerge_PrimaryKeyMismatch
Definition SR.cs:566
Definition SR.cs:7

References System.Data.Merger._dataSet, System.Data.Merger._dataTable, System.Data.Merger._IgnoreNSforTableLookup, System.Data.Merger._isStandAlonetable, System.Data.Merger._missingSchemaAction, System.Data.DataTableCollection.Add(), System.Collections.Generic.Dictionary< TKey, TValue >.Add(), System.array, System.Data.DataTable.Clone(), System.Data.DataTable.Columns, System.Collections.Generic.Dictionary< TKey, TValue >.Contains(), System.Data.DataTableCollection.Contains(), System.Data.InternalDataCollectionBase.Count, System.count, System.Collections.Generic.Dictionary< TKey, TValue >.Count, System.SR.DataMerge_DataTypeMismatch, System.SR.DataMerge_MissingColumnDefinition, System.SR.DataMerge_PrimaryKeyColumnsMismatch, System.SR.DataMerge_PrimaryKeyMismatch, System.Data.DataTable.DataSet, System.Data.DataTable.ExtendedProperties, System.SR.Format(), System.Data.Merger.MergeExtendedProperties(), System.Data.ExceptionBuilder.MergeFailed(), System.Data.ExceptionBuilder.MergeMissingDefinition(), System.Data.DataTable.Namespace, System.Data.DataTable.PrimaryKey, System.Data.DataSet.RaiseMergeFailed(), System.Data.DataTable.TableName, and System.Data.DataSet.Tables.

Referenced by System.Data.Merger.MergeRows(), and System.Data.Merger.MergeTableData().