관리 푸른 저장 클라이언트를 사용하여, 나는 푸른 표 스토리지에 삽입 작업의 간단한 배치를 보내려고하지만 전체 일괄 트랜잭션이 무효화되는 것을 보인다 그리고, ExecuteBatch 메서드 자체는 기존 레코드에 대한 배치에 단일 삽입이있는 경우 Exception을 throw합니다. (2.0 클라이언트를 사용)푸른 표 스토리지 배치 삽입
public class SampleEntity : TableEntity
{
public SampleEntity(string partKey, string rowKey)
{
this.PartitionKey = partKey;
this.RowKey = rowKey;
}
}
var acct = CloudStorageAccount.DevelopmentStorageAccount;
var client = acct.CreateCloudTableClient();
var table = client.GetTableReference("SampleEntities");
var foo = new SampleEntity("partition1", "preexistingKey");
var bar = new SampleEntity("partition1", "newKey");
var batchOp = new TableBatchOperation();
batchOp.Add(TableOperation.Insert(foo));
batchOp.Add(TableOperation.Insert(bar));
var result = table.ExecuteBatch(batchOp); // throws exception: "0:The specified entity already exists."
일괄 레벨 예외 InsertOrMerge를 사용하여 회피 그런데 모든 개별 동작 응답은 특정 동작을 삽입하거나 병합 여부, 204를 반환한다. 따라서 클라이언트 응용 프로그램이 클러스터의 다른 노드에 레코드를 삽입했는지 여부에 대한 지식을 유지하는 것은 불가능한 것처럼 보입니다. 유감스럽게도, 현재의 경우이 지식은 일부 다운 스트림 동기화에 필요합니다.
삽입의 배치가 진행 담요 예외를 던지는없이 당 항목 특정 응답 코드를 반환 할 수 있도록 일부 구성이나 기술이 있습니까? 당신이 이미 알고 있듯이 일괄 트랜잭션 작업이기 때문에