/// <summary>
		/// Deletes entity relation 
		/// </summary>
		/// <param name="id"></param>
		/// <returns></returns>
		public bool Delete(Guid id)
		{
			lock (lockObject)
			{
				MongoTransaction transaction = null;
				if(!MongoStaticContext.Context.TransactionInProgress)
					transaction = MongoStaticContext.Context.CreateTransaction();

				try
				{
					var relation = Read(id);

					var recRepo = new MongoRecordRepository();
					var entityRepo = new MongoEntityRepository();
					var originEntity = entityRepo.Read(relation.OriginEntityId);
					var targetEntity = entityRepo.Read(relation.TargetEntityId);

					recRepo.RemoveRecordField(originEntity.Name, $"#{relation.Name}_targets");
					recRepo.RemoveRecordField(targetEntity.Name, $"#{relation.Name}_origins");

					InvalidateRelationIndex(relation, dropIndexes: true);

					var result = MongoStaticContext.Context.EntityRelations.Delete(Query.EQ("_id", id));

					if (transaction != null)
					transaction.Commit();

					cachedRelations = null;
					return result;
				}
				catch
				{
					if (transaction != null)
					transaction.Rollback();

					throw;
				}
			}
		}