Raven.Storage.Managed.TransactionStorageActions.DeleteDocumentInTransaction C# (CSharp) Method

DeleteDocumentInTransaction() public method

public DeleteDocumentInTransaction ( Raven.Abstractions.Data.TransactionInformation transactionInformation, string key, System.Guid etag ) : void
transactionInformation Raven.Abstractions.Data.TransactionInformation
key string
etag System.Guid
return void
		public void DeleteDocumentInTransaction(TransactionInformation transactionInformation, string key, Guid? etag)
		{
			var readResult = storage.Documents.Read(new RavenJObject { { "key", key } });
			if (readResult == null)
			{
				return;
			}
			readResult = storage.DocumentsModifiedByTransactions.Read(new RavenJObject { { "key", key } });
			StorageHelper.AssertNotModifiedByAnotherTransaction(storage, this, key, readResult, transactionInformation);
			AssertValidEtag(key, readResult, storage.DocumentsModifiedByTransactions.Read(new RavenJObject {{"key", key}}),etag);

			if (readResult != null)
			{
				((RavenJObject)readResult.Key)["txId"] = transactionInformation.Id.ToByteArray();
				if (storage.Documents.UpdateKey(readResult.Key) == false)
					throw new ConcurrencyException("DELETE attempted on document '" + key +
												   "' that is currently being modified by another transaction");
			}

			storage.Transactions.UpdateKey(new RavenJObject
			                               	{
			                               		{"txId", transactionInformation.Id.ToByteArray()},
			                               		{"timeout", SystemTime.UtcNow.Add(transactionInformation.Timeout)}
			                               	});

			var newEtag = generator.CreateSequentialUuid();
			storage.DocumentsModifiedByTransactions.UpdateKey(new RavenJObject
			                                                  	{
			                                                  		{"key", key},
			                                                  		{"etag", newEtag.ToByteArray()},
			                                                  		{"modified", SystemTime.UtcNow},
			                                                  		{"deleted", true},
			                                                  		{"txId", transactionInformation.Id.ToByteArray()}
			                                                  	});
		}