我在Microsoft Sql CE中创建了一个表,用于存储一些数据。我通过SqlMetal生成了ORM,并将数据源引入了我的WPF项目。
我想创建一个简单的WPF表格,通过ORM生成的类来编辑表格记录。我希望这个表格支持典型的“确认/取消”语义。我按照典型方式创建了表格,使用双向数据绑定在相应字段上与ORM中的对象实例进行绑定。例如,在ORM中给定一个具有“TaskName”属性的对象,我在WPF表格中包含了以下内容:
这个结合了在代码中的DataContext赋值:
我想创建一个简单的WPF表格,通过ORM生成的类来编辑表格记录。我希望这个表格支持典型的“确认/取消”语义。我按照典型方式创建了表格,使用双向数据绑定在相应字段上与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 集成方面的新手。(这是我用来学习两个技术的个人项目。)
我有一些想法,并将它们放在回答中。