internal object this[int record]
{
get
{
_table._recordManager.VerifyRecord(record);
Debug.Assert(null != _storage, "null storage");
return _storage.Get(record);
}
set
{
try
{
_table._recordManager.VerifyRecord(record);
Debug.Assert(null != _storage, "no storage");
Debug.Assert(null != value, "setting null, expecting dbnull");
_storage.Set(record, value);
Debug.Assert(null != _table, "storage with no DataTable on column");
}
catch (Exception e)
{
ExceptionBuilder.TraceExceptionForCapture(e);
throw ExceptionBuilder.SetFailed(value, this, DataType, e);
}
if (AutoIncrement)
{
if (!_storage.IsNull(record))
{
AutoInc.SetCurrentAndIncrement(_storage.Get(record));
}
}
if (Computed)
{
// if and only if it is Expression column, we will cache LastChangedColumn, otherwise DO NOT
DataRow dr = GetDataRow(record);
if (dr != null)
{
// at initialization time (datatable.NewRow(), we would fill the storage with default value, but at that time we wont have datarow)
dr.LastChangedColumn = this;
}
}
}
}