Фон Вот моя проблема.Ранее в ходе моей программы System.Data.DataSet
был сериализован в файл.Затем, через некоторое время в программе была изменена схема набора данных, в частности, в одну из таблиц был добавлен столбец.
Этот набор данных был создан с использованием VS и C #, поэтому он имеет все свойства, доступные для доступастроки и столбцы по имени (через сгенерированный Microsoft код).В нем есть все файлы (.xsd, .cs и т. Д.), Которые VS должен знать, как выглядит набор данных, и имена в нем.
Файл загружается и сохраняется с помощью XML-сериализации.Это вызывает проблему сейчас, потому что, когда я десериализирую старый файл, он загружает данные, относящиеся к старой схеме.Это работает по большей части, но созданный объект (набор данных) имеет все, кроме столбца, который был добавлен позже.Таким образом, при попытке доступа к новому столбцу происходит сбой, потому что десериализация не знала об этом, и весь столбец становится нулевым.
Теперь это вызывает больше проблем, поскольку выдает исключение при попытке доступа к этому столбцу.(потому что это ноль) через свойства набора данных.
Вопрос У меня вопрос, можно ли как-нибудь добавить в колонку после десериализации?Очевидно, мне нужно добавить его, чтобы он соответствовал сгенерированному Microsoft коду, потому что при этом:
myDataSet.myTable.Columns.Add("MyMissingColumn");
... не добавляет необходимый столбец.Он может добавить столбец, но свойство строки myDataRow.MyMissingColumn
возвращает ноль и ошибки.
Нужно ли каким-либо образом копировать новую схему в этот объект?Опять же, единственная причина, по которой это не удается, заключается в том, что старый файл был сериализован с использованием старой схемы.
Любые предложения приветствуются.