public ActionResult SetupDatabase()
        {
            // Initialise the model, load any drop downs
            var model = new SetupDatabaseModel();
            InitialiseSetupDatabaseModel(model);

            return View(model);
        }
        public ActionResult SetupDatabase(SetupDatabaseModel model)
        {
            String setupSecretKey = ConfigurationHelper.GetApplicationSettingAsType<String>("LayersCMS:CmsDatabaseSetupSecretKey");

            if (ModelState.IsValid)
            {
                if (model.CmsDatabaseSetupSecretKey == setupSecretKey)
                {
                    // Initialise the database
                    try
                    {
                        new DatabaseSchemaSetup(_hashHelper).InitialiseDatabaseTables(new DatabaseSetupConfig()
                        {
                            DatabaseDialect = new MsSqlServerOrmLiteDialectProvider(),
                            UserEmailAddress = model.UserEmailAddress,
                            UserPassword = model.UserPassword,
                            ConnectionStringName = model.ConnectionStringName
                        });

                        // Initialisation complete. Show success message
                        return RedirectToAction("SetupDatabaseComplete");
                    }
                    catch (Exception e)
                    {
                        // Error initialising database. Show exception message
                        ModelState.AddModelError(String.Empty, "Unable to initialise database. Error: " + e.Message);
                    }

                }
                else
                {
                    // Setup secret key incorrect,
                    ModelState.AddModelError("CmsDatabaseSetupSecretKey", "Incorrect");
                }
            }

            // Populate the model ready for display
            InitialiseSetupDatabaseModel(model);

            return View(model);
        }
        private void InitialiseSetupDatabaseModel(SetupDatabaseModel model)
        {
            // Get the count of connection string
            int connStrCount = ConfigurationManager.ConnectionStrings.Count;

            // If no connection strings are found, throw an exception
            if (connStrCount == 0)
                throw new Exception("There must be at least one connection string specified in the web.config file");

            // Initialise a new list and add an item for each connection string found
            var connStrings = new List<SelectListItem>();
            connStrings.Add(new SelectListItem(){Text = "--- select ---"});

            for (int i = 0; i < connStrCount; i++)
            {
                String connStr = ConfigurationManager.ConnectionStrings[i].Name;
                connStrings.Add(new SelectListItem() {Text = connStr, Value = connStr});
            }

            // Set the value on the model
            model.ConnectionStringOptions = connStrings;
        }