Raven.Client.Shard.ShardedDocumentStore.DatabaseCommandsFor C# (CSharp) 메소드

DatabaseCommandsFor() 공개 메소드

public DatabaseCommandsFor ( string shardId ) : IDatabaseCommands
shardId string
리턴 IDatabaseCommands
		public IDatabaseCommands DatabaseCommandsFor(string shardId)
		{
			IDocumentStore store;
			if (ShardStrategy.Shards.TryGetValue(shardId, out store) == false)
				throw new InvalidOperationException("Could not find a shard named: " + shardId);

			return store.DatabaseCommands;
		}
#endif

Usage Example

예제 #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));
        }