Первый вопрос: если это одна и та же БД, почему у вас две таблицы с одинаковой информацией?
К вопросу: этот размер зависит от размеров. Если таблицы не велики, используйте транзакцию, очистите таблицу (DELETE * FROM TABLE и т. Д.) И снова введите туда свои данные.
С другой стороны, если таблицы большие, возникает вопрос: можете ли вы загрузить все это в свой словарь?
Конечно, вы должны спросить себя, что происходит с противоречивыми данными (другой пользователь / приложение изменило данные, пока они были в вашем словаре).
Если это займет много времени, вы можете вспомнить, что вы сделали с данными - это означает: пометить измененные данные и запомнить удаленные ключи и новые вставленные строки и сделать обновления на основе этого.
И того, и другого можно достичь, запомнив Заполненную таблицу данных и используя ее в качестве вспомогательного поля, или реализовав свои собственные механизмы.
В любом случае, я бы порекомендовал подумать над проблемой: вам действительно нужен словарь? Почему бы не сделать запросы к базе данных, чтобы получить данные? Или только для быстрого доступа к части данных?
PS: метод обновления на вашем DataAdapter сделает всю работу (изменение измененного, удаление удаленного и вставка новых datarows, но обновит DataTable / Set, так что это будет работать только один раз)