SimpleSyncProvider.InsertItem 메서드
파생 클래스에서 재정의되면 대상 저장소에 항목을 삽입하기 위해 Sync Framework Runtime에서 호출됩니다.
네임스페이스: Microsoft.Synchronization.SimpleProviders
어셈블리: microsoft.synchronization.simpleproviders.dll의 Microsoft.Synchronization.SimpleProviders
구문
‘선언
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
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.
매개 변수
- itemData
공급자별 고유 형식의 항목 데이터입니다.
- changeUnitsToCreate
항목에 대해 삽입할 변경 단위가 포함된 SyncId 개체입니다. 변경 단위가 지정되지 않은 경우에는 매개 변수가 null(비어 있지 않음)이어야 합니다.
- recoverableErrorReportingContext
항목을 삽입하려는 동안 발생하는 복구할 수 있는 오류를 보고하는 데 사용되는 RecoverableErrorReportingContext 개체입니다.
- keyAndUpdatedVersion
삽입할 항목의 키 및 업데이트된 버전 속성을 반환합니다. 반환 값이 올바르지 않으면 Sync Framework Runtime에서 세션을 끝내는 ArgumentOutOfRangeException을 발생시킵니다.
- commitKnowledgeAfterThisItem
지정된 항목에 대한 처리 작업이 완료된 후에 Sync Framework Runtime에서 메타데이터 저장소에 정보를 커밋할지 여부를 반환합니다.
주의
Sync Framework에서 원본의 변경 내용을 검색하고 로드한 후 이러한 변경 내용 및 해당 메타데이터 변경 내용을 대상 복제본에 적용해야 합니다. 대상에 있는 메타데이터 변경 내용은 Sync Framework에서 처리되지만 데이터 변경 내용 적용은 저장소 관련 작업이므로 DeleteItem, InsertItem 및 UpdateItem 메서드를 구현하여 처리됩니다.
예제
다음 코드 예제에서는 메모리 내 샘플 데이터 저장소에 삽입을 적용하는 이 메서드의 구현을 보여 줍니다. ItemTransfer
는 원본에서 변경 내용을 로드하여 대상에 적용할 때 사용되는 간단한 전송 메커니즘입니다. 전체 응용 프로그램의 맥락에서 이 코드를 보려면 Sync Framework SDK 및 Code Gallery에서 사용할 수 있는 "Sync101 using Simple Sync Provider"
응용 프로그램을 참조하십시오.
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
참고 항목
참조
SimpleSyncProvider 클래스
SimpleSyncProvider 멤버
Microsoft.Synchronization.SimpleProviders 네임스페이스