public void Delete(string key, Guid? etag, TransactionInformation transactionInformation)
{
log.Debug("Delete a document with key: {0} and etag {1}", key, etag);
TransactionalStorage.Batch(actions =>
{
if (transactionInformation == null)
{
AssertDeleteOperationNotVetoed(key, transactionInformation);
DeleteTriggers.Apply(trigger => trigger.OnDelete(key, transactionInformation));
RavenJObject metadata;
if (actions.Documents.DeleteDocument(key, etag, out metadata))
{
AddIndexingTask(actions, metadata, () => new RemoveFromIndexTask { Keys = { key } });
DeleteTriggers.Apply(trigger => trigger.AfterDelete(key, transactionInformation));
}
}
else
{
actions.Transactions.DeleteDocumentInTransaction(transactionInformation, key, etag);
}
workContext.ShouldNotifyAboutWork();
});
TransactionalStorage
.ExecuteImmediatelyOrRegisterForSyncronization(() => DeleteTriggers.Apply(trigger => trigger.AfterCommit(key)));
}