Хранение DataRows независимо от DataTable - RowNotInTableException - PullRequest
2 голосов
/ 15 июня 2011

Я создаю HashMap, отображающий поле идентификатора строки в DataTable на саму строку, чтобы улучшить время поиска для некоторых часто используемых таблиц.Время от времени я получаю исключение RowNotInTableException:

Эта строка была удалена из таблицы и не содержит никаких данных.BeginEdit () позволит создавать новые данные в этой строке.

После небольшого осмотра сети кажется, что DataRows не любят не присоединяться к DataTable.Даже несмотря на то, что DataTable остается в памяти (не уверен, что DataRows сохраняют ссылку на него, но я определенно все еще кэширую его в любом случае), возможно ли, что я что-то ломаю, сохраняя все эти строки изолированными в HashMap?Какая еще причина может быть для этой ошибки?В этом посте RowNotInTableException при доступе во второй раз обсуждается похожая проблема, но решения также нет.

UPDATE

Я на самом деле храню DataRowViews, если это имеет какое-то значение.

1 Ответ

3 голосов
/ 15 июня 2011

DataRow всегда должен быть присоединен к некоторой DataTable. Даже если удалить из DataTable, строка по-прежнему имеет ссылку на таблицу.

Причина в том, что схема таблицы помещается в DataTable, а не в DataRow (и сами данные тоже).

Если вы хотите быстрый поиск без DataTables, используйте некоторую собственную структуру вместо DataRow.

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