ISaveChangeWithChangeUnitsContext2::SetConstraintConflictOnChangeUnit
报告在目标提供程序尝试将包含变更单位的变更应用到目标副本时出现了约束冲突。
HRESULT SetConstraintConflictOnChangeUnit(
ISyncChangeUnit * pChangeUnit);
参数
- pChangeUnit
[in] 目标副本中与要应用的变更单位冲突的变更单位。
返回值
S_OK。
如果在要应用的变更中找不到 pChangeUnit,则返回值为 E_INVALIDARG。
E_POINTER。
如果已对此对象设置约束冲突或可恢复错误,则返回值为 SYNC_E_INVALID_OPERATION。
备注
如果目标提供程序尝试将变更应用到目标副本,而该变更违反了目标副本的约束,则会出现约束冲突。对于变更单位,这通常意味着变更违反了目标副本上的某个业务逻辑。作为业务逻辑冲突的示例,请考虑存储两个变更单位(name 和 country)的低保真副本。另请考虑存储三个变更单位(name、state/province 和 country)的高保真副本。高保真副本包含的业务逻辑针对 country 字段检查 state/province 字段,不会存储未通过检查的变更。低保真副本充当源并发送一个 country 设置为“USA”的项。目标提供程序尝试将变更应用到高保真副本,但在高保真副本上,该项的 state/province 字段中包含“British Columbia”。因此,变更违反了业务逻辑并对表示 state/province 字段的变更单位引发约束冲突。
当目标提供程序使用此方法报告约束冲突时,变更应用方根据应用程序为指定冲突设置的冲突解决操作解决该冲突。然后,变更应用方对目标提供程序调度任何必要的调用,以便目标提供程序可以将已解决的冲突应用到目标副本。有关详细信息,请参阅检测和解决约束冲突。