拒绝特定实体的更改

本文关键字:实体 拒绝 | 更新日期: 2023-09-27 18:06:27

我与WCF RIA服务有以下问题:我有一个表客户和一个表地址。一个客户可以有0…n地址。有一个用于编辑客户的表单,它带有一个显示地址的Datagrid。通过单击 add / edit ,可以在子窗口中添加/编辑地址。现在是这样的:

问题是用户应该总是能够取消编辑。这不是一个问题除了:如果你创建一个新客户,你添加一个地址给该客户,然后想要编辑地址,但想要取消编辑。

  • 你不能对上下文做RejectChanges,因为它会擦除客户的地址。
  • 你不能使用单独的上下文,因为你不能建立外键关系。

你们怎么解决这个问题?

拒绝特定实体的更改

实体实现IRevertibleChangeTracking来支持这个场景。由于它是显式实现的,因此必须强制转换它。下面的代码可以工作。

((IRevertibleChangeTracking)address).RejectChanges();

它可以在编辑的情况下工作,但不能在新的情况下。