Я создал таблицу в Microsoft Sql CE, которую я использую для хранения некоторых данных. Я сгенерировал ORM через SqlMetal и перенес источник данных в свой проект WPF.
Я хочу создать простую форму WPF, которую можно использовать для редактирования записи в таблице через классы, созданные в ORM. Я хочу, чтобы эта форма поддерживала типичную семантику OK / Cancel. Я создал форму, как я считаю, типичным способом, используя привязку данных TwoWay к соответствующим полям для привязки к экземпляру объекта из ORM. Например, учитывая объект в ORM, который имеет свойство «TaskName», я включил в свою форму WPF следующее:
<Label Grid.Column="0" Grid.Row="0" >
Name:
</Label>
<TextBox Name="txtName" Grid.Column="1" Grid.Row="0"
Text="{Binding TaskName, Mode=TwoWay}" AcceptsReturn="False"
MaxLines="1" />
Это в сочетании с назначением DataContext в коде:
var newRow = new OrmGeneratedClass();
// Populate default values on newRow, e.g.
detailWindow.DataContext = newRow;
detailWindow.ShowDialog();
может работать достаточно хорошо для создания нового ряда. Все изменения, сделанные через форму, немедленно отражаются в базовом OrmGeneratedClass. Проблема заключается в том, что немедленной поддержки отмены изменений нет, если, например, OrmGeneratedClass заполнен ранее сохраненными значениями.
Каков хороший дизайн для этого сценария, или я неправильно его проектирую, прежде чем подойду к этому вопросу? Я новичок в WPF и аспектах интеграции источника данных Sql Server / ORM. (Это личный проект, который я использую для изучения обеих технологий.)
У меня есть пара мыслей, и я добавлю их в ответы