internal override bool IsConstraintViolated()
{
if (Index == null)
{
Index = Table.GetIndex(Columns, null, DataViewRowState.None, null, false);
}
if (Index.HasDuplicates)
{
int[] dups = Index.Duplicates;
for (int i = 0; i < dups.Length; i++)
{
DataRow row = Table.RecordCache[dups[i]];
ArrayList columns = new ArrayList();
ArrayList values = new ArrayList();
foreach (DataColumn col in Columns)
{
columns.Add(col.ColumnName);
values.Add(row[col].ToString());
}
string columnNames = String.Join(", ", (string[])columns.ToArray(typeof(string)));
string columnValues = String.Join(", ", (string[])values.ToArray(typeof(string)));
row.RowError = String.Format("Column '{0}' is constrained to be unique. Value '{1}' is already present.", columnNames, columnValues);
for (int j = 0; j < Columns.Length; ++j)
{
row.SetColumnError(Columns [j], row.RowError);
}
}
return(true);
}
return(false);
}