public void Insert(object key, InternalId internalId, TableServiceContext serviceContext) { serviceContext.AddObject(ForwardIndexName, new IndexEntity {PartitionKey = KeyAsString(key), RowKey = internalId.ToString(), OriginalValue = key.ToString()}); serviceContext.AddObject(ReverseIndexName, new IndexEntity { PartitionKey = internalId.ToString(), RowKey = KeyAsString(key), OriginalValue = key.ToString() }); }
public void Delete(InternalId internalId, TableServiceContext serviceContext) { var allKeysInIndex = (from ri in ReverseIndex(serviceContext) where ri.PartitionKey == internalId.ToString() select ri); //In the forward index, get the corresponding forward index for each reverse index value and delete them both Parallel.ForEach( allKeysInIndex, reverseEntity => { // var forwardEntity = new IndexEntity {PartitionKey = reverseEntity.RowKey, RowKey = reverseEntity.PartitionKey}; // serviceContext.AttachTo(ForwardIndexName, forwardEntity, "*"); var forwardEntity = Queryable.Single<IndexEntity>((from fi in ForwardIndex(serviceContext) where fi.PartitionKey == reverseEntity.RowKey where fi.RowKey == reverseEntity.PartitionKey select fi)); serviceContext.DeleteObject(forwardEntity); serviceContext.DeleteObject(reverseEntity); }); }