private void RegisterDocumentStore(ILogger logger) { var verifier = new ProviderVerifier(); if (_configuration.DocumentStore == null || string.IsNullOrEmpty(_configuration.DocumentStore?.Url) || !verifier.IsNoSqlServiceRunning(_configuration.DocumentStore?.Url, _configuration.DocumentStore?.Username, _configuration.DocumentStore?.Password, logger)) { _autofacContainerBuilder.RegisterType <NullDocumentStore>() .As <IDocumentStore>() .SingleInstance(); return; } var store = new Raven.Client.Documents.DocumentStore { Urls = new[] { _configuration.DocumentStore?.Url } }; store.Initialize(); _autofacContainerBuilder.RegisterInstance <Raven.Client.Documents.DocumentStore>(store) .As <Raven.Client.Documents.IDocumentStore>() .SingleInstance(); _autofacContainerBuilder.Register(ctx => { var transactionContext = AmbientTransactionContext.Current; var unitOfWork = (UnitOfWork)transactionContext?.Items["UnitOfWork"]; if (unitOfWork != null) { return(unitOfWork.DocumentSessionFactory); } return(new DocumentSessionFactory(ctx.Resolve <Raven.Client.Documents.IDocumentStore>(), ctx.Resolve <ILogger>(), false)); }) .AsSelf() .InstancePerLifetimeScope(); _autofacContainerBuilder.RegisterType <DocumentStore>() .As <IDocumentStore>() .InstancePerDependency(); }