У меня есть таблица с составным уникальным, я бы позволил пользователям менять местами порядковые номера, но SQL выдает нарушение уникального ключа. Предположительно, потому что нарушения проверяются после каждого изменения строки
public class RateCodes
{
public int Id { get; set; }
//Unique Composite Key Field 1
public int Sequence { get; set; }
//Unique Composite Key Field 2
public int DivisionId { get; set; }
public Decimal RateCode { get; set; }
}
В нашем клиенте мы хотим разрешить пользователю изменять порядок своих кодов тарификации.
Однако, когда я выполняю обновление, я получаю исключение
"System.Data.Entity.Infrastructure.DbUpdateException: при обновлении записей произошла ошибка. Подробности см. Во внутреннем исключении.
System.Data.Entity.Core.UpdateException: при обновлении записей произошла ошибка. Смотрите подробности во внутреннем исключении.
System.Data.SqlClient.SqlException: Нарушение ограничения UNIQUE KEY 'UX_RateCodes_Sequence'. Невозможно вставить дубликат ключа в объект 'dbo.RateCodes'. Дубликат значения ключа (346, 3)
Несмотря на то, что я сохраняю все сразу, SQL выдает уникальное нарушение, потому что SQL выполняет проверку уникального ключа перед обновлением всех данных.
Я не хочу удалять свои данные перед сохранением, потому что другое приложение может работать с таблицей, и у меня могут не быть все данные в текущем приложении. Как я могу решить эту проблему?