public IIndexCreator StartCreatingProjectionIndex(SearchConditions searchConditions, IList <string> projectedFields)
        {
            string indexKey        = this.GetProjectionIndexKey(searchConditions, projectedFields);
            string indexKeyInCache = this.GetIndexKeyInCache(indexKey, this._hashKeyValue);

            if (indexKeyInCache.Length > MaxKeyLength)
            {
                this.Log("Index key ({0}) is too long", searchConditions.Key);
                return(null);
            }

            var creator = new EnyimProjectionIndexCreator(this, indexKey, indexKeyInCache, searchConditions);

            if (!creator.StartCreatingIndex())
            {
                this.Log("Failed to start creating projection index ({0})", indexKey);
                return(null);
            }

            return(creator);
        }
        public IIndexCreator StartCreatingProjectionIndex(SearchConditions searchConditions, IList<string> projectedFields)
        {
            string indexKey = this.GetProjectionIndexKey(searchConditions, projectedFields);
            string indexKeyInCache = this.GetIndexKeyInCache(indexKey, this._hashKeyValue);
            if (indexKeyInCache.Length > MaxKeyLength)
            {
                this.Log("Index key ({0}) is too long", searchConditions.Key);
                return null;
            }

            var creator = new EnyimProjectionIndexCreator(this, indexKey, indexKeyInCache, searchConditions);

            if (!creator.StartCreatingIndex())
            {
                this.Log("Failed to start creating projection index ({0})", indexKey);
                return null;
            }

            return creator;
        }