private DataRowChangeEventArgs RaiseRowChanging(DataRowChangeEventArgs args, DataRow eRow, DataRowAction eAction, bool fireEvent)
{
// check all constraints
if (EnforceConstraints && !_inLoad)
{
int columnCount = _columnCollection.Count;
for (int i = 0; i < columnCount; ++i)
{
DataColumn column = _columnCollection[i];
if (!column.Computed || eAction != DataRowAction.Add)
{
column.CheckColumnConstraint(eRow, eAction);
}
}
int constraintCount = _constraintCollection.Count;
for (int i = 0; i < constraintCount; ++i)
{
_constraintCollection[i].CheckConstraint(eRow, eAction);
}
}
if (fireEvent)
{
args = RaiseRowChanging(args, eRow, eAction);
}
if (!_inDataLoad)
{
// cascade things...
if (!MergingData && eAction != DataRowAction.Nothing && eAction != DataRowAction.ChangeOriginal)
{
CascadeAll(eRow, eAction);
}
}
return args;
}