示例#1
0
        public static void RegisterDependencies(ContainerBuilder builder)
        {
            builder.Register(c =>
            {
                var connectionString    = ConfigurationManager.AppSettings["RAVENHQ_CONNECTION_STRING"];
                var parts               = connectionString.Split(';');

                var documentStore = new DocumentStore()
                {
                    Url = parts[0].Replace("Url=",string.Empty),
                    ApiKey = parts.Length > 1 ? parts[1].Replace("ApiKey=",string.Empty) : null
                };

                documentStore.Initialize();

                // Create temporary initializer
                var initializer = new DatabaseInitializationService(documentStore, new DocumentSessionProvider(documentStore), new Optional<SiteSettingsDocument>(null));

                initializer.DeleteIndices();
                initializer.InstallIndices();
                initializer.ResetIndices();

                RavenProfiler.InitializeFor(documentStore);

                return documentStore;
            }).As<IDocumentStore>().SingleInstance();

            builder.Register(c => new DocumentSessionProvider(c.Resolve<IDocumentStore>())).AsSelf();
            builder.Register(
                c =>
                new DatabaseInitializationService(c.Resolve<IDocumentStore>(),c.Resolve<DocumentSessionProvider>(),
                                                  c.Resolve<Optional<SiteSettingsDocument>>())).AsSelf();
            builder.Register(c => new Optional<SiteSettingsDocument>(c.Resolve<DocumentSessionProvider>().Session.Query<SiteSettingsDocument>().Customize(q => q.WaitForNonStaleResults()).FirstOrDefault())).As<Optional<SiteSettingsDocument>>().InstancePerHttpRequest();
        }
 public AdministrationController(DatabaseInitializationService initializationService)
 {
     this.initializationService  = initializationService;
 }