System.Data.XmlSchemaDataImporter.GenerateRelationship C# (CSharp) Method

GenerateRelationship() private method

private GenerateRelationship ( RelationStructure rs ) : DataRelation
rs RelationStructure
return DataRelation
		private DataRelation GenerateRelationship (RelationStructure rs)
		{
			DataTable ptab = dataset.Tables [rs.ParentTableName];
			DataTable ctab = dataset.Tables [rs.ChildTableName];

			DataRelation rel ;
			string name = rs.ExplicitName != null ? rs.ExplicitName : XmlHelper.Decode (ptab.TableName) + '_' + XmlHelper.Decode (ctab.TableName);

			// Annotation Relations belonging to a DataSet can contain multiple colnames
			// in parentkey and childkey.
			if (datasetElement != null) {
				String[] pcolnames = rs.ParentColumnName.Split (null);
				String[] ccolnames = rs.ChildColumnName.Split (null);

				DataColumn[] pcol = new DataColumn [pcolnames.Length];
				for (int i=0; i<pcol.Length; ++i)
					pcol [i] = ptab.Columns [XmlHelper.Decode (pcolnames [i])];

				DataColumn[] ccol = new DataColumn [ccolnames.Length];
				for (int i=0; i < ccol.Length; ++i) {
					ccol [i] = ctab.Columns [XmlHelper.Decode (ccolnames [i])];
					if (ccol [i] == null)
						ccol [i] = CreateChildColumn (pcol [i], ctab);
				}
				rel = new DataRelation (name, pcol, ccol, rs.CreateConstraint);
			} else {
				DataColumn pcol = ptab.Columns [XmlHelper.Decode (rs.ParentColumnName)];
				DataColumn ccol = ctab.Columns [XmlHelper.Decode (rs.ChildColumnName)];
				if (ccol == null) 
					ccol = CreateChildColumn (pcol, ctab);
				rel = new DataRelation (name, pcol, ccol, rs.CreateConstraint);
			}
			rel.Nested = rs.IsNested;
			if (rs.CreateConstraint)
				rel.ParentTable.PrimaryKey = rel.ParentColumns;
			return rel;
		}