Esempio n. 1
0
        public static DatabaseModel FromConnectionString(string ConnectionString)
        {
            var result = new DatabaseModel();

            try
            {
                var csb = new SqlConnectionStringBuilder(ConnectionString);

                if (!string.IsNullOrEmpty(csb.DataSource))
                    result.Server = csb.DataSource;
                if (!string.IsNullOrEmpty(csb.InitialCatalog))
                    result.DatabaseName = csb.InitialCatalog;
                if (csb.IntegratedSecurity)
                {
                    result.AuthMethod = "SSPI";
                }
                else
                {
                    result.AuthMethod = "SQL";
                    result.Auth_SQL_Username = csb.UserID;
                    result.Auth_SQL_Password = csb.Password;
                }
            }
            catch (Exception)
            {
                // Ignore Parsing errors
            }

            return result;
        }
Esempio n. 2
0
        public virtual ActionResult Database(DatabaseModel model)
        {
            if (ModelState.IsValid)
            {
                // Continue with Configuration
                var connectionString = model.ToConnectionString();

                // Try Creating/Migrating
                connectionString.ConnectTimeout = 5;
                Disco.Data.Repository.DiscoDatabaseConnectionFactory.SetDiscoDataContextConnectionString(connectionString.ToString(), false);

                try
                {
                    Disco.Data.Migrations.DiscoDataMigrator.MigrateLatest(true);
                }
                catch (Exception ex)
                {
                    // Find inner exception
                    SqlException sqlException = null;
                    Exception innermostException = ex;
                    do
                    {
                        if (sqlException == null)
                            sqlException = innermostException as SqlException;
                        if (innermostException.InnerException != null)
                            innermostException = innermostException.InnerException;
                        else
                            break;
                    } while (true);

                    if (sqlException != null)
                    {
                        ModelState.AddModelError(string.Empty, string.Format("Unable to create or migrate the database to the latest version: [{0}] {1}", sqlException.GetType().Name, sqlException.Message));
                    }
                    else
                    {
                        ModelState.AddModelError(string.Empty, string.Format("Unable to create or migrate the database to the latest version: [{0}] {1}", innermostException.GetType().Name, innermostException.Message));
                    }
                }

                if (ModelState.IsValid)
                {
                    // Save Connection String
                    //Disco.Data.Repository.DiscoDatabaseConnectionFactory.SetDiscoDataContextConnectionString(model.ToConnectionString().ToString(), true);
                    // Write Organisation Name into DB
                    using (DiscoDataContext database = new DiscoDataContext())
                    {
                        database.DiscoConfiguration.OrganisationName = DiscoApplication.OrganisationName;
                        database.SaveChanges();
                    }

                    return RedirectToAction(MVC.InitialConfig.FileStore());
                }
            }

            return View(model);
        }
Esempio n. 3
0
        public virtual ActionResult Database()
        {
            var cs = Disco.Data.Repository.DiscoDatabaseConnectionFactory.DiscoDataContextConnectionString;

            DatabaseModel m;

            if (cs == null)
                m = new DatabaseModel(); // Just use Defaults
            else
                m = DatabaseModel.FromConnectionString(cs); // Import from existing Connection String

            return View(m);
        }