/// <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>());
            }
        }
Exemplo n.º 2
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>());
            }
        }