/// <devdoc> /// Does verification on the column and it's name, and points the column at the dataSet that owns this collection. /// An ArgumentNullException is thrown if this column is null. An ArgumentException is thrown if this column /// already belongs to this collection, belongs to another collection. /// A DuplicateNameException is thrown if this collection already has a column with the same /// name (case insensitive). /// </devdoc> private void BaseAdd(DataColumn column) { if (column == null) { throw ExceptionBuilder.ArgumentNull("column"); } if (column.table == table) { throw ExceptionBuilder.CannotAddColumn1(column.ColumnName); } if (column.table != null) { throw ExceptionBuilder.CannotAddColumn2(column.ColumnName); } if (column.ColumnName.Length == 0) { column.ColumnName = AssignName(); } RegisterColumnName(column.ColumnName, column); try { column.SetTable(table); if (!table.fInitInProgress && column.Computed) { if (column.DataExpression.DependsOn(column)) { throw ExceptionBuilder.ExpressionCircular(); } } if (0 < table.RecordCapacity) { // adding a column to table with existing rows column.SetCapacity(table.RecordCapacity); } // fill column with default value. for (int record = 0; record < table.RecordCapacity; record++) { column.InitializeRecord(record); } if (table.DataSet != null) { column.OnSetDataSet(); } } catch (Exception e) { // if (ADP.IsCatchableOrSecurityExceptionType(e)) { UnregisterName(column.ColumnName); } throw; } }
private void BaseAdd(DataColumn column) { if (column == null) { throw ExceptionBuilder.ArgumentNull("column"); } if (column.table == this.table) { throw ExceptionBuilder.CannotAddColumn1(column.ColumnName); } if (column.table != null) { throw ExceptionBuilder.CannotAddColumn2(column.ColumnName); } if (column.ColumnName.Length == 0) { column.ColumnName = this.AssignName(); } this.RegisterColumnName(column.ColumnName, column, null); try { column.SetTable(this.table); if ((!this.table.fInitInProgress && column.Computed) && column.DataExpression.DependsOn(column)) { throw ExceptionBuilder.ExpressionCircular(); } if (0 < this.table.RecordCapacity) { column.SetCapacity(this.table.RecordCapacity); } for (int i = 0; i < this.table.RecordCapacity; i++) { column.InitializeRecord(i); } if (this.table.DataSet != null) { column.OnSetDataSet(); } } catch (Exception exception) { if (ADP.IsCatchableOrSecurityExceptionType(exception)) { this.UnregisterName(column.ColumnName); } throw; } }