Метод InsertItem
При переопределении в производном классе вызывается средой выполнения Sync Framework для вставки элемента в хранилище назначения.
Пространство имен: Microsoft.Synchronization.SimpleProviders
Сборка: Microsoft.Synchronization.SimpleProviders (в Microsoft.Synchronization.SimpleProviders.dll)
Синтаксис
'Декларация
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 _
)
'Применение
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
abstract InsertItem :
itemData:Object *
changeUnitsToCreate:IEnumerable<SyncId> *
recoverableErrorReportingContext:RecoverableErrorReportingContext *
keyAndUpdatedVersion:ItemFieldDictionary byref *
commitKnowledgeAfterThisItem:bool byref -> unit
public abstract function InsertItem(
itemData : Object,
changeUnitsToCreate : IEnumerable<SyncId>,
recoverableErrorReportingContext : RecoverableErrorReportingContext,
keyAndUpdatedVersion : ItemFieldDictionary,
commitKnowledgeAfterThisItem : boolean
)
Параметры
- itemData
Тип System. . :: . .Object
Данные для элемента в формате, определяемом поставщиком.
- changeUnitsToCreate
Тип System.Collections.Generic. . :: . .IEnumerable< (Of < ( <'SyncId> ) > ) >
Объект SyncId, содержащий базовые единицы для вставки в элемент. Если базовая единица указана, то параметр должен быть равен null (не пусто).
- recoverableErrorReportingContext
Тип Microsoft.Synchronization.SimpleProviders. . :: . .RecoverableErrorReportingContext
Объект RecoverableErrorReportingContext, используемый для возврата устранимых ошибок, возникших во время попытки вставки элемента.
- keyAndUpdatedVersion
Тип Microsoft.Synchronization.SimpleProviders. . :: . .ItemFieldDictionary%
Возвращает свойства ключа и обновленной версии вставляемого элемента. Если возвращаемое значение неверно, то среда выполнения Sync Framework вызывает исключение ArgumentOutOfRangeException, которое завершает сеанс.
- commitKnowledgeAfterThisItem
Тип System. . :: . .Boolean%
Возвращает значение, определяющее, должна ли среда выполнения платформы Sync Framework осуществлять фиксацию набора знаний в хранилище метаданных после завершения обработки указанного элемента.
Замечания
После того как Sync Framework обнаруживает и загружает изменения из источника, эти изменения и соответствующие изменения метаданных необходимо применить в конечной реплике. Изменения метаданных на стороне назначения обрабатываются платформой Sync Framework, однако применение изменений данных зависит от хранилища и выполняется в реализации следующих методов: DeleteItem, InsertItem и UpdateItem.
Примеры
В следующем примере кода показана реализация этого метода, который применяет операции вставки к хранилищу образца данных в памяти. ItemTransfer — простой механизм передачи, который используется, если изменения загружаются из источника и применяются на назначении. Чтобы просмотреть этот код в контексте полного приложения, см. приложение "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