public override void SetRangeInHash(string key, IEnumerable<KeyValuePair<string, string>> keyValuePairs)
        {
            key.ThrowIfNull("key");
            keyValuePairs.ThrowIfNull("keyValuePairs");

            var id = Repository.GetId(typeof(RavenHash), key);
            var result = _session.Load<RavenHash>(id);

            // Not exists? Insert
            if (result == null) {
                result = new RavenHash() {
                    Id = id
                };

                _session.Store(result);
            }

            foreach (var keyValuePair in keyValuePairs) {
                result.Fields[keyValuePair.Key] = keyValuePair.Value;
            }
        }
        public override void SetRangeInHash(string key, IEnumerable<KeyValuePair<string, string>> keyValuePairs)
        {
            key.ThrowIfNull("key");
            keyValuePairs.ThrowIfNull("keyValuePairs");

            using (var repository = _storage.Repository.OpenSession()) {
                var id = Repository.GetId(typeof(RavenHash), key);
                var result = repository.Load<RavenHash>(id);

                if (result == null) {
                    result = new RavenHash() {
                        Id = id
                    };

                    repository.Store(result);
                }

                foreach (var keyValuePair in keyValuePairs) {
                    result.Fields[keyValuePair.Key] = keyValuePair.Value;
                }

                repository.SaveChanges();
            }
        }