/// <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; } }
/// <include file='doc\DataColumnCollection.uex' path='docs/doc[@for="DataColumnCollection.BaseAdd"]/*' /> /// <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, DataStorage storage) { 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); } // this will bind the expression. column.SetTable(table); // bind the storage here (SetTable above will set it to null) column.Storage = storage; if (column.ColumnName.Length == 0) { column.ColumnName = AssignName(); } else { RegisterName(column.ColumnName, column); } column.hashCode = GetSpecialHashCode(column.ColumnName); if (table.RecordCapacity > 0) { column.SetCapacity(table.RecordCapacity); } // fill column with default value. for (int i = 0; i < table.RecordCapacity; i++) { column[i] = column.DefaultValue; } if (table.DataSet != null) { column.OnSetDataSet(); } }