void ISubscriptionStorage.Unsubscribe(Address address, IEnumerable<MessageType> messageTypes)
        {
            using (var context = new SubscriptionServiceContext(client))
            {
                var encodedAddress = EncodeTo64(address.ToString());
                foreach (var messageType in messageTypes)
                {
                    var type = messageType;
                    var query = from s in context.Subscriptions
                                where s.PartitionKey == type.ToString() && s.RowKey == encodedAddress
                                select s;

                    var subscription = query.SafeFirstOrDefault();
                    if(subscription != null) context.DeleteObject(subscription);
                    context.SaveChangesWithRetries();
                }
            }
        }
        void ISubscriptionStorage.Unsubscribe(Address address, IEnumerable<MessageType> messageTypes)
        {
            using (var context = new SubscriptionServiceContext(client))
            {
                var encodedAddress = EncodeTo64(address.ToString());
                foreach (var messageType in messageTypes)
                {
                    var type = messageType;
                    var query = from s in context.Subscriptions
                                where s.PartitionKey == type.ToString() && s.RowKey == encodedAddress
                                select s;

                    var subscription = query
                        .AsTableServiceQuery(context) // Fixes #191
                        .AsEnumerable() // Fixes #191, continuation not applied on single resultsets eventhough continuation can happen
                        .SafeFirstOrDefault();
                    if(subscription != null) context.DeleteObject(subscription);
                    context.SaveChangesWithRetries();
                }
            }
        }
        void ISubscriptionStorage.Unsubscribe(Address address, IEnumerable <MessageType> messageTypes)
        {
            using (var context = new SubscriptionServiceContext(client))
            {
                var encodedAddress = EncodeTo64(address.ToString());
                foreach (var messageType in messageTypes)
                {
                    var type  = messageType;
                    var query = from s in context.Subscriptions
                                where s.PartitionKey == type.ToString() && s.RowKey == encodedAddress
                                select s;

                    var subscription = query.FirstOrDefault();
                    if (subscription != null)
                    {
                        context.DeleteObject(subscription);
                    }
                    context.SaveChangesWithRetries();
                }
            }
        }
        void ISubscriptionStorage.Unsubscribe(Address address, IEnumerable <MessageType> messageTypes)
        {
            using (var context = new SubscriptionServiceContext(client))
            {
                var encodedAddress = EncodeTo64(address.ToString());
                foreach (var messageType in messageTypes)
                {
                    var type  = messageType;
                    var query = from s in context.Subscriptions
                                where s.PartitionKey == type.ToString() && s.RowKey == encodedAddress
                                select s;

                    var subscription = query
                                       .AsTableServiceQuery(context) // Fixes #191
                                       .AsEnumerable()               // Fixes #191, continuation not applied on single resultsets eventhough continuation can happen
                                       .SafeFirstOrDefault();
                    if (subscription != null)
                    {
                        context.DeleteObject(subscription);
                    }
                    context.SaveChangesWithRetries();
                }
            }
        }