拒绝特定实体的变更

Lue*_*eTm 5 c# silverlight silverlight-4.0 wcf-ria-services

我在WCF RIA服务中遇到以下问题:我有一个表Customer和一个表Address.客户可以拥有0 ... n个地址.有一个用于编辑客户的表单,其中有一个显示地址的Datagrid.您可以通过单击" 添加/编辑"在子窗口中添加/编辑地址.现在是这样的:

问题是用户应该始终能够取消编辑.这不是问题,除了:如果您创建新客户并向该客户添加地址,则需要编辑该地址但希望取消该编辑.

  • 您不能对上下文执行RejectChanges,因为它会擦除客户的地址.
  • 您不能使用单独的上下文,因为您无法建立外键关系.

你们怎么解决这个问题?

Kyl*_*lan 6

实体实现IRevertibleChangeTracking以支持此方案.由于它是明确实现的,因此您必须进行强制转换.以下代码将起作用.

((IRevertibleChangeTracking)address).RejectChanges();
Run Code Online (Sandbox Code Playgroud)