Windows Azure TableServiceContext UndoChanges - PullRequest
0 голосов
/ 02 апреля 2012

При попытке сохранить объект с использованием недопустимого символа (например, '/') в RowKey выдается исключение при вызове

_tableServiceContext.AddObject(tableName, myEntity);

Я получаю исключение System.Data.Services.Client.DataServiceRequestException с информацией «вне диапазона», что легко предотвращается (путем предотвращения или проверки недопустимых символов).

Теперь у меня вопрос, как мне восстановиться после этого состояния? После такой ошибки все последующие вызовы AddObject завершаются неудачей, предположительно потому, что «поврежденный объект» все еще принадлежит контексту.

Поэтому я ищу возможность "Отменить изменения".

Любые советы приветствуются, спасибо.

P.S .: Я ищу лучший способ, чем выбросить контекст или удалить объект из контекста ...

1 Ответ

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

Лучший способ, вероятно, состоит в том, чтобы отделить сущность от контекста.Если по какой-то причине это не вариант, вы можете повторить попытку сохранения, установив SaveChangesOption.ContinueOnErrors.например,

_tableServiceContext.SaveChangesWithRetries(SaveChangesOptions.ContinueOnError);

Это в основном применяет все обновления по одному, а не в пакетном режиме.Обратите внимание, что он будет игнорировать все возникающие ошибки, а не только ошибку нелегального лица.

...