Метод RecoverableErrorReportingContext.RecordConstraintError

Записывает ошибку ограничения, возникшую при попытке применить изменение к элементу. Позволяет задать описание локального элемента, участвующего в конфликте ограничения с этим изменением.

Пространство имен: Microsoft.Synchronization.SimpleProviders
Сборка: Microsoft.Synchronization.SimpleProviders (в microsoft.synchronization.simpleproviders.dll)

Синтаксис

'Декларация
Public Sub RecordConstraintError ( _
    conflictingItemKey As ItemFieldDictionary _
)
'Применение
Dim instance As RecoverableErrorReportingContext
Dim conflictingItemKey As ItemFieldDictionary

instance.RecordConstraintError(conflictingItemKey)
public void RecordConstraintError (
    ItemFieldDictionary conflictingItemKey
)
public:
void RecordConstraintError (
    ItemFieldDictionary^ conflictingItemKey
)
public void RecordConstraintError (
    ItemFieldDictionary conflictingItemKey
)
public function RecordConstraintError (
    conflictingItemKey : ItemFieldDictionary
)

Параметры

  • conflictingItemKey
    Ключ элемента, для которого записывается ошибка ограничения.

Исключения

Тип исключения Условие

ChangeDeferredByProviderException

Применяемое изменение было отложено поставщиком до следующего сеанса синхронизации в результате конфликта ограничения.

SimpleProviderInvalidOperationException

Было несколько ошибок ограничений, ошибка ограничения возникла для объекта, который больше не является действительным, либо политика разрешения ошибок ограничений не допускает, чтобы ошибки ограничения были устранимыми.

Замечания

Изменение будет повторно применено или разрешено позже в сеансе синхронизации. Дополнительные сведения о конфликтах ограничений см. в разделе Обработка конфликтов для простых поставщиков.

Пример

Следующий пример кода показывает реализацию метода InsertItem, который применяет операции вставки к хранилищу образца данных в памяти. Метод регистрирует ошибку ограничения, если операция вставки не может быть применена. Чтобы просмотреть этот код в контексте полного приложения, см. приложение "Sync101 using Simple Sync Provider", которое можно найти в пакете Sync Framework SDK или на странице Code Gallery.

public override void InsertItem(object itemData, 
    IEnumerable<SyncId> changeUnitsToCreate,
    RecoverableErrorReportingContext recoverableErrorReportingContext, 
    out ItemFieldDictionary keyAndUpdatedVersion, 
    out bool commitKnowledgeAfterThisItem)
{
    ItemTransfer transfer = (ItemTransfer)itemData;
    ItemData dataCopy = new ItemData(transfer.ItemData);

    // Check for duplicates, and record a constraint error if a duplicate is detected.
    if (!_store.Contains(transfer.Id))
    {
        _store.CreateItem(dataCopy, transfer.Id);
        keyAndUpdatedVersion = _store.CreateItemFieldDictionary(transfer.Id);
    }
    else
    {
        recoverableErrorReportingContext.RecordConstraintError(_store.CreateItemFieldDictionary(transfer.Id));
        keyAndUpdatedVersion = null;
    }
    commitKnowledgeAfterThisItem = false;
}
Public Overrides Sub InsertItem(ByVal itemData As Object, ByVal changeUnitsToCreate As IEnumerable(Of SyncId), ByVal recoverableErrorReportingContext As RecoverableErrorReportingContext, ByRef keyAndUpdatedVersion As ItemFieldDictionary, ByRef commitKnowledgeAfterThisItem As Boolean)
    Dim transfer As ItemTransfer = DirectCast(itemData, ItemTransfer)
    Dim dataCopy As New ItemData(transfer.ItemData)

    ' Check for duplicates, and record a constraint error if a duplicate is detected. 
    If Not _store.Contains(transfer.Id) Then
        _store.CreateItem(dataCopy, transfer.Id)
        keyAndUpdatedVersion = _store.CreateItemFieldDictionary(transfer.Id)
    Else
        recoverableErrorReportingContext.RecordConstraintError(_store.CreateItemFieldDictionary(transfer.Id))
        keyAndUpdatedVersion = Nothing
    End If
    commitKnowledgeAfterThisItem = False
End Sub

См. также

Справочник

Класс RecoverableErrorReportingContext
Элементы RecoverableErrorReportingContext
Пространство имен Microsoft.Synchronization.SimpleProviders