internal override bool IsConstraintViolated()
{
bool result = false;
Index index = ConstraintIndex;
if (index.HasDuplicates)
{
object[] uniqueKeys = index.GetUniqueKeyValues();
for (int i = 0; i < uniqueKeys.Length; i++)
{
Range r = index.FindRecords((object[])uniqueKeys[i]);
if (1 < r.Count)
{
DataRow[] rows = index.GetRows(r);
string error = ExceptionBuilder.UniqueConstraintViolationText(_key.ColumnsReference, (object[])uniqueKeys[i]);
for (int j = 0; j < rows.Length; j++)
{
rows[j].RowError = error;
foreach (DataColumn dataColumn in _key.ColumnsReference)
{
rows[j].SetColumnError(dataColumn, error);
}
}
result = true;
}
}
}
return result;
}