Первый раз постер.Я наслаждался многолетней помощью здесь.Спасибо всем.
У меня такая ситуация, что этого не должно быть.
Используя VB.NET в сообществе VS2017, я получаю исключение System.Data.ConstraintException при попыткеблок, в котором я специально пойман в ловушку для этого точного исключения.
Вот как выглядит сообщение:
System.Data.ConstraintException: 'Column' PAIR1, PAIR2, PAIR3 'isвынужден быть уникальным.Значение 'CHATBTC, ETHBTC, CHATETH' уже присутствует. '
https://www.dropbox.com/s/d91rgtwsjwioqhm/SO_error.jpg?dl=0
Как вы можете сказать по логике, я рассчитываю на исключение, чтобы выстрелить, чтобы ямогу построить таблицу уникальных строк и добавить в мои дублирующиеся значения строк.Проверка на наличие дубликатов перед ADD занимает много времени, так как таблица увеличивается в размере, поэтому этот подход является самым быстрым.
Это происходит не каждый раз, только примерно на 30%.Мое приложение еще недостаточно далеко, чтобы работать в производстве, поэтому все, что я вижу, находится во время отладки.
Мой код здесь:
tblTriArbPairs.PrimaryKey = New DataColumn() {tblTriArbPairs.Columns("PAIR1"), tblTriArbPairs.Columns("PAIR2"), tblTriArbPairs.Columns("PAIR3")}
Try
tblTriArbPairs.Rows.Add(
Pairs(0), Pairs(1), Pairs(2),
idxPair0, idxPair1, idxPair2,
result.TD1, result.TD2, result.TD3,
CoinOnly(Pairs(0)), CurrOnly(Pairs(0)),
CoinOnly(Pairs(1)), CurrOnly(Pairs(1)),
CoinOnly(Pairs(2)), CurrOnly(Pairs(2)),
FindLoopCoin(CoinOnly(Pairs(0)), CurrOnly(Pairs(0)), CoinOnly(Pairs(1)), CurrOnly(Pairs(1)), CoinOnly(Pairs(2)), CurrOnly(Pairs(2))),
GetSymbolLIQ(Pairs(0)), GetSymbolLIQ(Pairs(1)), GetSymbolLIQ(Pairs(2))
)
RowsAdded += 1
Catch ex As System.Data.ConstraintException
DupRows += 1
Catch ex As Exception
Finally
End Try
Когда таблица заполнена, я получаю 3480 строкдобавлено и 2640 дубликатов.Нет согласованности относительно того, когда происходит ошибка.Иногда прямо сейчас, иногда почти в конце.
Я просмотрел все и не нашел ничего, что обращало бы к ConstraintException, чтобы его не поймали.Другие исключения, да.
Любая помощь очень ценится.Надеюсь, я написал хороший вопрос.:)