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

◆ InstantiateTable()

DataTable System.Data.XDRSchema.InstantiateTable ( DataSet dataSet,
XmlElement node,
XmlElement typeNode )
inlinepackage

Definition at line 485 of file XDRSchema.cs.

486 {
487 string name = string.Empty;
488 XmlAttributeCollection attributes = node.Attributes;
489 int minOccurs = 1;
490 int maxOccurs = 1;
491 string text = null;
493 DataTable table;
494 if (attributes.Count > 0)
495 {
497 table = dataSet.Tables.GetTable(name, _schemaUri);
498 if (table != null)
499 {
500 return table;
501 }
502 }
503 table = new DataTable(XmlConvert.DecodeName(name));
508 _ds.Tables.Add(table);
510 XMLSchema.SetProperties(table, attributes);
511 if (text != null)
512 {
513 string[] array = text.TrimEnd(null).Split((char[]?)null);
514 int num = array.Length;
515 DataColumn[] array2 = new DataColumn[num];
516 for (int i = 0; i < num; i++)
517 {
518 DataColumn dataColumn = table.Columns[array[i], _schemaUri];
519 if (dataColumn == null)
520 {
521 throw ExceptionBuilder.ElementTypeNotFound(array[i]);
522 }
524 }
526 }
527 foreach (DataTable item in arrayList)
528 {
529 DataRelation dataRelation = null;
530 DataRelationCollection childRelations = table.ChildRelations;
531 for (int j = 0; j < childRelations.Count; j++)
532 {
533 if (childRelations[j].Nested && item == childRelations[j].ChildTable)
534 {
536 }
537 }
538 if (dataRelation == null)
539 {
540 DataColumn dataColumn2 = table.AddUniqueKey();
541 DataColumn childColumn = item.AddForeignKey(dataColumn2);
542 dataRelation = new DataRelation(table.TableName + "_" + item.TableName, dataColumn2, childColumn, createConstraints: true);
544 dataRelation.Nested = true;
545 item.DataSet.Relations.Add(dataRelation);
547 }
548 }
549 return table;
550 }
DataTableCollection Tables
Definition DataSet.cs:396
string GetInstanceName(XmlElement node)
Definition XDRSchema.cs:272
void HandleTypeNode(XmlElement typeNode, DataTable table, ArrayList tableChildren)
Definition XDRSchema.cs:460
void GetMinMax(XmlElement elNode, ref int minOccurs, ref int maxOccurs)
Definition XDRSchema.cs:415
static ? string DecodeName(string? name)
Definition XmlConvert.cs:55

References System.Data.XDRSchema._ds, System.Data.XDRSchema._schemaUri, System.Data.DataRelationCollection.Add(), System.Data.DataTableCollection.Add(), System.array, System.Data.DataTable.Columns, System.Xml.XmlAttributeCollection.Count, System.Data.DataRelation.DataSet, System.Xml.XmlConvert.DecodeName(), System.Xml.Dictionary, System.Data.ExceptionBuilder.ElementTypeNotFound(), System.Data.XDRSchema.GetInstanceName(), System.Data.XDRSchema.GetMinMax(), System.Data.XDRSchema.HandleTypeNode(), System.item, System.Data.DataSet.Relations, System.Data.XMLSchema.SetProperties(), System.Data.DataSet.Tables, and System.text.

Referenced by System.Data.XDRSchema.HandleTable().