Восстановление старого DataRow и установка значений оригинальной версии? - PullRequest
1 голос
/ 02 февраля 2012

Мне нужно клонировать все данные / текущие исходные значения для резервного копирования.Если я использую:

 private static DataRow CopyRow(DataRow dr)
         {
             DataRow drCopy = dr.Table.NewRow();
             DataRow drCopyOrig = dr.Table.NewRow();
             for (int i = 0; i < dr.Table.Columns.Count; i++)
             {
                 drCopy[i] = dr[i];
                 drCopyOrig[i] = dr[i,DataRowVersion.Original];
             }
             return drCopy;
         }

При восстановлении мои исходные значения (dr ["col", DataRowVersion.Original]) теряются, потому что я не могу установить значения для этого выражения.

1 Ответ

1 голос
/ 02 февраля 2012

Обязательно вызовите AcceptChanges для вашего DataSet или DataTable перед доступом к свойству DataRow DataRowVersion.

Выдержка из Состояния строк и версии строк :

Когда AcceptChanges вызывается для DataSet, DataTable или DataRow, все строки с состоянием строки «Удалено»удалены.Оставшимся строкам присваивается состояние строки «Без изменений», а значения в исходной версии строки перезаписываются значениями текущей версии строки.Когда вызывается RejectChanges, все строки с состоянием строки Добавлено, удаляются.Оставшимся строкам присваивается состояние строки «Без изменений», а значения в текущей версии строки заменяются значениями исходной версии строки.

...