DatabaseCommandsFor() public method

public DatabaseCommandsFor ( string shardId ) : IDatabaseCommands
shardId string
return IDatabaseCommands
示例#1
0
        public string GenerateDocumentKey(DocumentConvention conventions, object entity)
        {
            var shardId = shardedDocumentStore.ShardStrategy.ShardResolutionStrategy.MetadataShardIdFor(entity);

            if (shardId == null)
            {
                throw new InvalidOperationException(string.Format(
                                                        "ShardResolutionStrategy.MetadataShardIdFor cannot return null. You must specify where to store the metadata documents for the entity type '{0}'.", entity.GetType().FullName));
            }

            MultiTypeHiLoKeyGenerator value;

            if (generatorsByShard.TryGetValue(shardId, out value))
            {
                return(value.GenerateDocumentKey(conventions, entity));
            }

            lock (this)
            {
                if (generatorsByShard.TryGetValue(shardId, out value) == false)
                {
                    value             = new MultiTypeHiLoKeyGenerator(shardedDocumentStore.DatabaseCommandsFor(shardId), capacity);
                    generatorsByShard = new Dictionary <string, MultiTypeHiLoKeyGenerator>(generatorsByShard)
                    {
                        { shardId, value }
                    };
                }
            }

            return(value.GenerateDocumentKey(conventions, entity));
        }