共用方式為


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 欄位的變更單位上導致條件約束衝突。

當目的地提供者使用這個方法來報告條件約束衝突時,變更套用者就會根據應用程式針對指定之衝突所設定的衝突解決動作,解決此衝突。然後,變更套用者就會將任何必要的呼叫分派給目的地提供者,讓目的地提供者能夠將解決的衝突套用至目的地複寫。如需詳細資訊,請參閱偵測及解決條件約束衝突

請參閱

參考

ISaveChangeWithChangeUnitsContext2 介面