Pregunta

Estoy utilizando las herramientas de la base de datos Microsoft.Practices.EnterpriseLibrary y tengo problemas para crear una nueva base de datos utilizando solo la información de la cadena de conexión.

Lo ideal sería hacer lo siguiente:

Database dbEngine = DatabaseFactory.CreateDatabase(
    "Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;");

¿Es posible crear una base de datos utilizando solo la cadena de conexión?

Si es así, ¿cómo se puede lograr?

¿Fue útil?

Solución

También puedes hacer


Database mydb = new EnterpriseLibrary.Data.Sql.SqlDatabase("connection string here");

y conservará la versatilidad del objeto Base de datos, pero créelo con una cadena de conexión.

Otros consejos

Estoy creando una cadena de conexión sobre la marcha de forma dinámica con lo siguiente donde ConnectionString está en mi .config

     Database configdb = DatabaseFactory.CreateDatabase("ConnectionString");

                DbConnectionStringBuilder sb = configdb.DbProviderFactory.CreateConnectionStringBuilder();

                // Set the Connection String fields.

                sb["Data Source"] = targetServer; 
                sb["Initial Catalog"] = targetDb; 
                sb["User ID"] = username;
                sb["Password"] = password;
                sb["Connect Timeout"] = dbTimeout;

                GenericDatabase newDb = new GenericDatabase(sb.ToString(), configdb.DbProviderFactory);
Database db = newDb;

Er ... Eso es porque CreateDatabase espera el nombre de una cadena de conexión (como se especifica en el archivo de configuración de su aplicación), no la cadena de conexión en sí.

Descubrí que puedes usar el siguiente comando ...

SqlDatabase dbEngine = new SqlDatabase(connectionString);

no es tan versátil como el objeto Base de datos, pero funciona para mi propósito.

¡Gracias a todos!

Se solucionó mi problema. Tengo una aplicación web única que utiliza muchas bases de datos, de acuerdo con los diferentes subdominios en la url para conectar con la base de datos diferente. tales como:


  • abc.test.com ------ > utilizando el Db_projectABC

  • def.test.com ------ > utilizando el db_ProjectDEF


Uso url-rewrite para analizar el nombre del subdominio, y uso el nombre del subdominio para elegir la cadena de conexión de la base de datos que está almacenada en la base de datos principal.

Gracias

Database objDatabase = new Microsoft.Practices.
                    EnterpriseLibrary.Data.Sql.SqlDatabase(@"Password=mypassword;Persist Security Info=True;User ID=sa;Initial Catalog=DatabaseName;Data Source=192.168.2.1"); 
      // Data Sourc is Your DB Name for ex : systemIp\\SqlExpress

            DbConnection objCon = objDatabase.CreateConnection();
            objCon.Open();
            objDbTransaction = objCon.BeginTransaction(IsolationLevel.ReadUncommitted);
            DbCommand cmd = objDatabase.GetSqlStringCommand(" Select sName from Emp");

            SqlDataReader dr = (SqlDataReader)objDatabase.ExecuteReader(cmd, objDbTransaction);

            StringBuilder sb = new StringBuilder();

            while (dr.Read())
            {
                sb.Append(Convert.ToString(dr[0]));
                sb.Append("  ");
            }
            objDbTransaction.Commit();
            objCon.Close();

            //objDatabase.DbProviderFactory.
            return sb.ToString();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top