/// <summary>
        /// Create DataBase if not exist
        /// </summary>
        protected void CreateDataBase()
        {
            lock (this)
            {
                if (DataBaseExist())
                {
                    return;
                }



                var sqlBuild     = DataBaseTypes != DataBaseTypes.PostgreSql ? new SqlConnectionStringBuilder(ConnectionString) : null;
                var npSqlBuilder = DataBaseTypes == DataBaseTypes.PostgreSql ? new NpgsqlConnectionStringBuilder(ConnectionString) : null;
                var dbName       = DataBaseTypes == DataBaseTypes.Mssql ? sqlBuild?.InitialCatalog : sqlBuild?.DataSource;
                if (string.IsNullOrEmpty(dbName) && DataBaseTypes != DataBaseTypes.PostgreSql)
                {
                    throw new EntityException("InitialCatalog can not be null or empty");
                }

                if (DataBaseTypes == DataBaseTypes.PostgreSql && string.IsNullOrEmpty(npSqlBuilder.Database))
                {
                    throw new EntityException("Database can not be null or empty");
                }

                if (DataBaseTypes == DataBaseTypes.Mssql)
                {
                    sqlBuild.InitialCatalog = "master";
                    var tr  = new DbRepository(sqlBuild.ToString(), DataBaseTypes);
                    var cmd = tr.GetSqlCommand($"Create DataBase [{dbName.Trim()}]");
                    tr.ExecuteNonQuery(cmd);
                }
                else if (DataBaseTypes == DataBaseTypes.Sqllight)
                {
                    SQLiteConnection.CreateFile(dbName.Trim());
                }
                else
                {
                    dbName = npSqlBuilder.Database;
                    npSqlBuilder.Database = "";
                    var tr  = new DbRepository(npSqlBuilder.ToString(), DataBaseTypes);
                    var cmd = tr.GetSqlCommand($"Create DataBase {dbName}");
                    tr.ExecuteNonQuery(cmd);
                }

                var latestChanges = GetCodeLatestChanges();
                if (latestChanges.Any())
                {
                    latestChanges.Execute(true);
                }
            }
        }
        /// <summary>
        /// Validate if database exist
        /// </summary>
        /// <returns></returns>
        protected bool DataBaseExist()
        {
            var sqlBuild     = DataBaseTypes != DataBaseTypes.PostgreSql ? new SqlConnectionStringBuilder(ConnectionString) : null;
            var npSqlBuilder = DataBaseTypes == DataBaseTypes.PostgreSql ? new NpgsqlConnectionStringBuilder(ConnectionString) : null;
            var dbName       = DataBaseTypes == DataBaseTypes.Mssql ? sqlBuild.InitialCatalog : sqlBuild?.DataSource;

            if (string.IsNullOrEmpty(dbName) && DataBaseTypes != DataBaseTypes.PostgreSql)
            {
                throw new EntityException("InitialCatalog can not be null or empty");
            }

            if (DataBaseTypes == DataBaseTypes.PostgreSql && string.IsNullOrEmpty(npSqlBuilder.Database))
            {
                throw new EntityException("Database can not be null or empty");
            }

            if (DataBaseTypes == DataBaseTypes.Mssql)
            {
                sqlBuild.InitialCatalog = "master";
                var tr  = new DbRepository(sqlBuild.ToString(), DataBaseTypes);
                var cmd = tr.GetSqlCommand($"SELECT  CAST(CASE WHEN db_id(String[{dbName}]) is not null THEN 1 ELSE 0 END AS BIT)");
                return(tr.ExecuteScalar(cmd).ConvertValue <bool>());
            }
            else if (DataBaseTypes == DataBaseTypes.Sqllight)
            {
                try
                {
                    var tr = new DbRepository(sqlBuild.ToString(), DataBaseTypes);
                    tr.ValidateConnection();
                    return(true);
                }
                catch
                {
                    return(false);
                }
            }
            else
            {
                dbName = npSqlBuilder.Database;
                npSqlBuilder.Database = "";
                var tr  = new DbRepository(npSqlBuilder.ToString(), DataBaseTypes);
                var cmd = tr.GetSqlCommand($"SELECT CAST(CASE WHEN datname is not null THEN 1 ELSE 0 END AS BIT) from pg_database WHERE lower(datname) = lower(String[{dbName}])");
                return(tr.ExecuteScalar(cmd).ConvertValue <bool>());
            }
        }
Esempio n. 3
0
        /// <summary>
        /// Create DataBase if not exist
        /// </summary>
        protected void CreateDataBase()
        {
            lock (this)
            {
                if (DataBaseExist())
                {
                    return;
                }

                var sqlBuild = new TransactionConnectionString(DataBaseTypes, ConnectionString);
                if (string.IsNullOrEmpty(sqlBuild.InitialCatalog))
                {
                    throw new EntityException("InitialCatalog, Database or DataSource  can not be null or empty");
                }
                var dbName = sqlBuild.InitialCatalog;
                if (DataBaseTypes == DataBaseTypes.Mssql)
                {
                    sqlBuild.InitialCatalog = "";
                    using (var rep = new DbRepository(sqlBuild.ToString(), DataBaseTypes))
                        rep.GetSqlCommand($"Create DataBase [{dbName.Trim()}]").ExecuteNonQuery();
                }
                else if (DataBaseTypes == DataBaseTypes.Sqllight)
                {
                    File.Create(sqlBuild.ToString().Trim()).Close();
                }
                else
                {
                    sqlBuild.InitialCatalog = "";
                    using (var rep = new DbRepository(sqlBuild.ToString(), DataBaseTypes))
                        rep.GetSqlCommand($"Create DataBase {dbName}").ExecuteNonQuery();
                }

                var latestChanges = GetCodeLatestChanges();
                if (latestChanges.Any())
                {
                    latestChanges.Execute(true);
                }
            }
        }
Esempio n. 4
0
        /// <summary>
        /// Validate if database exist
        /// </summary>
        /// <returns></returns>
        protected bool DataBaseExist()
        {
            var sqlBuild = new TransactionConnectionString(DataBaseTypes, ConnectionString);

            if (string.IsNullOrEmpty(sqlBuild.InitialCatalog))
            {
                throw new EntityException("InitialCatalog, Database or DataSource  can not be null or empty");
            }

            var dbName = sqlBuild.InitialCatalog;

            if (DataBaseTypes == DataBaseTypes.Mssql)
            {
                sqlBuild.InitialCatalog = "";
                using (var rep = new DbRepository(sqlBuild.ToString(), DataBaseTypes))
                    return(rep.GetSqlCommand($"SELECT  CAST(CASE WHEN db_id(String[{dbName}]) is not null THEN 1 ELSE 0 END AS BIT)").ExecuteScalar().ConvertValue <bool>());
            }
            else if (DataBaseTypes == DataBaseTypes.Sqllight)
            {
                try
                {
                    using (var rep = new DbRepository(sqlBuild.ToString(), DataBaseTypes))
                        rep.ValidateConnection();
                    return(true);
                }
                catch
                {
                    return(false);
                }
            }
            else
            {
                sqlBuild.InitialCatalog = "";
                using (var rep = new DbRepository(sqlBuild.ToString(), DataBaseTypes))
                    return(rep.GetSqlCommand($"SELECT CAST(CASE WHEN datname is not null THEN 1 ELSE 0 END AS BIT) from pg_database WHERE lower(datname) = lower(String[{dbName}])").ExecuteScalar().ConvertValue <bool>());
            }
        }