Отменить изменения, внесенные в строку объекта - PullRequest
2 голосов
/ 07 апреля 2011

Отмена изменения строки, связанной с текстовыми полями в форме.

Я использую структуру сущностей для сохранения и обновления данных, поэтому не могу контролировать, что будет сохранено. Если пользователь нажимает кнопку «Отмена» в форме, я хочу, чтобы все изменения в строке были возвращены к тому, что было раньше.

Та же проблема, что и у меня с новыми строками. У меня есть новая строка, созданная при запуске формы, как я могу избавиться от нее до того, как она будет сохранена в базе данных?

Большое спасибо.

Ответы [ 2 ]

2 голосов
/ 07 апреля 2011

Правильный способ - избавиться от контекста с измененными данными, создать новый контекст и перезагрузить данные из базы данных.У EF нет прямого способа отменить изменения.Если вы не хотите этого делать, вы должны вручную выполнить итерации сущностей в ObjectStateManager (ChangeTracker в DbContext API) и в зависимости от их состояния либо отсоединить их (для добавленных строк), либо переписать фактические значения с исходными значениями.Если вы также изменили отношения, задача станет действительно сложной, и в таком случае будет хорошей идеей следовать моему прежнему совету.

1 голос
/ 07 апреля 2011

Вы можете взглянуть на транзакции, чтобы сделать такой «запасной вариант». Посмотрите на страницу о TransactionScope , которая охватывает базовый синтаксис C #. TransactionScope запоминает действия, выполненные с базой данных, и может откатить их позже (т. Е. В рамках одного сеанса).

Это, однако, не является чистым решением Entity (Generator), вам нужно сделать некоторое кодирование.

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