В прежние времена DataSet
(и связанных объектов) представления в памяти объектов данных - DataRow
и DataRowView
- поддерживали транзакционные изменения через BeginEdit
, EndEdit
и CancelEdit
. Наличие обоих позволило больше, чем просто «отменить» изменения, внесенные в объект, и вернуть его обратно к его извлеченным (или неинициализированным) значениям; объект DataRowView
позволил разработчику начать одну операцию редактирования на DataRow
в любом состоянии и отменить эти изменения, не отменяя других изменений, которые могли быть сделаны.
Например,
DataRow
получено как:
Col1 | Col2
----------------
1 2
DataRow
Изменено на:
Col1 | Col2
----------------
1 3
BeginEdit
вызван объект DataRowView
для этой строки.
DataRowView
изменено на:
Col1 | Col2
----------------
2 3
CancelEdit
вызывается на DataRowView
, возвращая значения в
Col1 | Col2
----------------
1 3
Таким образом, изменение было отменено, но значения, представленные перед редактированием - даже если они были изменениями в памяти, а не восстановленными значениями - сохраняются.
Есть ли подобная возможность в Entity Framework? У меня есть скрытое подозрение, что ответ «нет», учитывая, что похоже, что Entity
использует простые переменные поддержки для значений столбцов, а не подход «мешка свойств», как используется DataRow
(или инфраструктура DependencyProperty
WPF). использует).