Отменить изменения в сущностях каркаса сущностей
================================================

 это может быть тривиальным вопросом, но: поскольку инфраструктура сущностей ADO.NET автоматически отслеживает изменения (в сгенерированных сущностях) и поэтому сохраняет исходные значения, как я могу откатить изменения, внесенные в объекты сущностей? 

 У меня есть форма, которая позволяет пользователю редактировать набор объектов «Клиент» в виде сетки. 

 Теперь у меня есть две кнопки «Принять» и «Восстановить»: если нажать «Принять», я вызываю `Context.SaveChanges()` и измененные объекты записываются обратно в базу данных. Если нажать «Вернуть», я бы хотел, чтобы все объекты получили исходные значения свойств. Какой будет код для этого? 

 Спасибо 

 В EF нет операции возврата или отмены изменений. У каждой сущности есть `ObjectStateEntry` в `ObjectStateManager` . Запись состояния содержит исходные и фактические значения, поэтому вы можете использовать исходные значения для перезаписи текущих значений, но вы должны сделать это вручную для каждого объекта. Это не будет воспринимать изменения в навигационных свойствах / отношениях. 

 Распространенным способом «отменить изменения» является удаление контекста и перезагрузка сущностей. Если вы хотите избежать перезагрузки, вы должны создать клоны сущностей и изменить эти клоны в новом контексте объекта. Если пользователь отменит изменения, у вас останутся оригинальные объекты.