Condividi tramite


Metodo SimpleSyncProvider.InsertItem

Quando sottoposto a override in una classe derivata, viene chiamato dal runtime di Sync Framework per inserire un elemento nell'archivio di destinazione.

Spazio dei nomi: Microsoft.Synchronization.SimpleProviders
Assembly: Microsoft.Synchronization.SimpleProviders (in microsoft.synchronization.simpleproviders.dll)

Sintassi

'Dichiarazione
Public MustOverride Sub InsertItem ( _
    itemData As Object, _
    changeUnitsToCreate As IEnumerable(Of SyncId), _
    recoverableErrorReportingContext As RecoverableErrorReportingContext, _
    <OutAttribute> ByRef keyAndUpdatedVersion As ItemFieldDictionary, _
    <OutAttribute> ByRef commitKnowledgeAfterThisItem As Boolean _
)
'Utilizzo
Dim instance As SimpleSyncProvider
Dim itemData As Object
Dim changeUnitsToCreate As IEnumerable(Of SyncId)
Dim recoverableErrorReportingContext As RecoverableErrorReportingContext
Dim keyAndUpdatedVersion As ItemFieldDictionary
Dim commitKnowledgeAfterThisItem As Boolean

instance.InsertItem(itemData, changeUnitsToCreate, recoverableErrorReportingContext, keyAndUpdatedVersion, commitKnowledgeAfterThisItem)
public abstract void InsertItem (
    Object itemData,
    IEnumerable<SyncId> changeUnitsToCreate,
    RecoverableErrorReportingContext recoverableErrorReportingContext,
    out ItemFieldDictionary keyAndUpdatedVersion,
    out bool commitKnowledgeAfterThisItem
)
public:
virtual void InsertItem (
    Object^ itemData, 
    IEnumerable<SyncId^>^ changeUnitsToCreate, 
    RecoverableErrorReportingContext^ recoverableErrorReportingContext, 
    [OutAttribute] ItemFieldDictionary^% keyAndUpdatedVersion, 
    [OutAttribute] bool% commitKnowledgeAfterThisItem
) abstract
public abstract void InsertItem (
    Object itemData, 
    IEnumerable<SyncId> changeUnitsToCreate, 
    RecoverableErrorReportingContext recoverableErrorReportingContext, 
    /** @attribute OutAttribute() */ /** @ref */ ItemFieldDictionary keyAndUpdatedVersion, 
    /** @attribute OutAttribute() */ /** @ref */ boolean commitKnowledgeAfterThisItem
)
JScript does not support passing value-type arguments by reference.

Parametri

  • itemData
    Dati per l'elemento nel formato specifico del provider.
  • changeUnitsToCreate
    Oggetto SyncId contenente le unità di modifica da inserire per un elemento. Il parametro deve essere Null (non vuoto) se non viene specificata alcuna unità di modifica.
  • recoverableErrorReportingContext
    Oggetto RecoverableErrorReportingContext utilizzato per segnalare errori reversibili che si verificano durante i tentativi di inserire un elemento.
  • keyAndUpdatedVersion
    Restituisce le proprietà della chiave e della versione aggiornata dell'elemento da inserire. Se il valore restituito non è valido, il runtime di Sync Framework genera ArgumentOutOfRangeException che termina la sessione.
  • commitKnowledgeAfterThisItem
    Restituisce un valore che indica se il runtime di Sync Framework deve eseguire il commit della conoscenza nell'archivio dei metadati dopo che è stata completata l'elaborazione dell'elemento specificato.

Osservazioni

Dopo che in Sync Framework sono state rilevate e caricate le modifiche dalla replica di origine, tali modifiche e le modifiche ai metadati corrispondenti devono essere applicate alla replica di destinazione. Le modifiche ai metadati nella destinazione vengono gestite da Sync Framework, ma l'applicazione delle modifiche ai dati è un'attività specifica dell'archivio e viene gestita implementando i metodi seguenti: DeleteItem, InsertItem e UpdateItem.

Esempio

Nell'esempio di codice seguente viene illustrata un'implementazione di questo metodo che applica inserimenti a un archivio dati di esempio in memoria. ItemTransfer è un meccanismo di trasferimento semplice utilizzato quando le modifiche vengono caricate dall'origine e applicate alla destinazione. Per visualizzare il codice nel contesto di un'applicazione completa, vedere l'applicazione "Sync101 using Simple Sync Provider" disponibile in Sync Framework SDK e in 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

Vedere anche

Riferimento

Classe SimpleSyncProvider
Membri SimpleSyncProvider
Spazio dei nomi Microsoft.Synchronization.SimpleProviders