/// <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>()); } }
/// <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>()); } }