Элемент с таким же ключом уже был добавлен ошибка - PullRequest
2 голосов
/ 22 декабря 2011

Я знаю, что ошибка является распространенной, но я не уверен, как ее решить.

Мой сценарий таков:

  • нажмите кнопку в окне 1, появится окно 2 (заполняет текстовые поля).
  • завершить транзакцию в окне 2 (сохранить данные).
  • нажмите кнопку НАЗАД в окне 2 (закрывает окно 2, открывает окно 1).
  • снова, нажмите кнопку в окне 1, чтобы открыть и заполнить данные в окне 2.
  • ошибка срабатывает. Элемент с тем же ключом был добавлен.

1 Ответ

3 голосов
/ 22 декабря 2011

Звучит так, как будто вы добавляете данные к чему-либо в окне 2, которое является общим для всего приложения, или для всего экземпляра окна 2. Когда вы входите в окно 2 во второй раз и заполняете данные, вы, вероятно, добавляете данные в Dictionary, который уже был добавлен. Отсюда сообщение «Элемент с таким же ключом уже добавлен».

Мой совет: поставьте точку останова в коде, где вы заполняете данные, и проверьте значения, содержащиеся в Dictionary (если вы использовали один и имеете к нему доступ). Затем проверьте данные, которые вы добавляете, и вы должны найти репликацию.

Кроме того, существуют различные способы предотвращения добавления дублирующих записей.

  1. Очистите Dictionary, когда вы закончили с ним в первый раз - таким образом, вы добавите данные только один раз (если у вас нет дублирующих записей в ваших исходных данных).

  2. Проверьте, существует ли ключ в Dictionary перед добавлением записи. Вы можете сделать это, используя if (mSomeDictionary.ContainsKey(someEntryKey)) /

  3. Если вы просто хотите использовать последние значения, вы можете просто переопределить данные, связанные с определенным объектом. Вы можете сделать это, используя что-то вроде: mSomeDictionary[someEntryKey] = someValue;. Если ключ ввода еще не существует, автоматически добавляется новая запись.

Если ничего из вышеперечисленного вам не поможет, опубликуйте код, в котором произошла ошибка, и включите трассировку стека из брошенного исключения, и мы сможем изучить его подробнее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...