/// <summary> /// Does verification on the table. /// An ArgumentNullException is thrown if this relation is null. An ArgumentException is thrown if this relation /// already belongs to this collection, belongs to another collection. /// A DuplicateNameException is thrown if this collection already has a relation with the same /// name (case insensitive). /// </summary> protected virtual void AddCore(DataRelation relation) { DataCommonEventSource.Log.Trace("<ds.DataRelationCollection.AddCore|INFO> {0}, relation={1}", ObjectID, (relation != null) ? relation.ObjectID : 0); if (relation == null) { throw ExceptionBuilder.ArgumentNull(nameof(relation)); } relation.CheckState(); DataSet dataSet = GetDataSet(); if (relation.DataSet == dataSet) { throw ExceptionBuilder.RelationAlreadyInTheDataSet(); } if (relation.DataSet != null) { throw ExceptionBuilder.RelationAlreadyInOtherDataSet(); } if (relation.ChildTable.Locale.LCID != relation.ParentTable.Locale.LCID || relation.ChildTable.CaseSensitive != relation.ParentTable.CaseSensitive) { throw ExceptionBuilder.CaseLocaleMismatch(); } if (relation.Nested) { relation.CheckNamespaceValidityForNestedRelations(relation.ParentTable.Namespace); relation.ValidateMultipleNestedRelations(); relation.ParentTable.ElementColumnCount++; } }
protected virtual void AddCore(DataRelation relation) { Bid.Trace("<ds.DataRelationCollection.AddCore|INFO> %d#, relation=%d\n", this.ObjectID, (relation != null) ? relation.ObjectID : 0); if (relation == null) { throw ExceptionBuilder.ArgumentNull("relation"); } relation.CheckState(); DataSet dataSet = this.GetDataSet(); if (relation.DataSet == dataSet) { throw ExceptionBuilder.RelationAlreadyInTheDataSet(); } if (relation.DataSet != null) { throw ExceptionBuilder.RelationAlreadyInOtherDataSet(); } if ((relation.ChildTable.Locale.LCID != relation.ParentTable.Locale.LCID) || (relation.ChildTable.CaseSensitive != relation.ParentTable.CaseSensitive)) { throw ExceptionBuilder.CaseLocaleMismatch(); } if (relation.Nested) { relation.CheckNamespaceValidityForNestedRelations(relation.ParentTable.Namespace); relation.ValidateMultipleNestedRelations(); DataTable parentTable = relation.ParentTable; parentTable.ElementColumnCount++; } }
/// <devdoc> /// Does verification on the table. /// An ArgumentNullException is thrown if this relation is null. An ArgumentException is thrown if this relation /// already belongs to this collection, belongs to another collection. /// A DuplicateNameException is thrown if this collection already has a relation with the same /// name (case insensitive). /// </devdoc> protected virtual void AddCore(DataRelation relation) { Bid.Trace("<ds.DataRelationCollection.AddCore|INFO> %d#, relation=%d\n", ObjectID, (relation != null) ? relation.ObjectID : 0); if (relation == null) throw ExceptionBuilder.ArgumentNull("relation"); relation.CheckState(); DataSet dataSet = GetDataSet(); if (relation.DataSet == dataSet) throw ExceptionBuilder.RelationAlreadyInTheDataSet(); if (relation.DataSet != null) throw ExceptionBuilder.RelationAlreadyInOtherDataSet(); if (relation.ChildTable.Locale.LCID != relation.ParentTable.Locale.LCID || relation.ChildTable.CaseSensitive != relation.ParentTable.CaseSensitive) throw ExceptionBuilder.CaseLocaleMismatch(); if (relation.Nested) { relation.CheckNamespaceValidityForNestedRelations(relation.ParentTable.Namespace); relation.ValidateMultipleNestedRelations(); relation.ParentTable.ElementColumnCount++; } }