internal void SetOrdinalInternal(int ordinal)
{
if (_ordinal != ordinal)
{
if (Unique && _ordinal != -1 && ordinal == -1)
{
UniqueConstraint key = _table.Constraints.FindKeyConstraint(this);
if (key != null)
{
_table.Constraints.Remove(key);
}
}
if ((null != _sortIndex) && (-1 == ordinal))
{
Debug.Assert(2 <= _sortIndex.RefCount, "bad sortIndex refcount");
_sortIndex.RemoveRef();
_sortIndex.RemoveRef(); // second should remove it from index collection
_sortIndex = null;
}
int originalOrdinal = _ordinal;
_ordinal = ordinal;
if (originalOrdinal == -1 && _ordinal != -1)
{
if (Unique)
{
UniqueConstraint key = new UniqueConstraint(this);
_table.Constraints.Add(key);
}
}
}
}