Domanda

Sto usando gli strumenti del database Microsoft.Practices.EnterpriseLibrary e ho problemi a creare un nuovo database usando solo le informazioni sulla stringa di connessione.

Idealmente, vorrei fare quanto segue:

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

È possibile creare un database usando solo la stringa di connessione?

In tal caso, come può essere raggiunto?

È stato utile?

Soluzione

Puoi anche farlo


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

e manterrai la versatilità dell'oggetto Database, ma crealo con una stringa di connessione.

Altri suggerimenti

Sto creando una stringa di connessione al volo in modo dinamico con quanto segue dove ConnectionString è nel mio .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 ... Questo perché CreateDatabase prevede il nome di una stringa di connessione (come specificato nel file di configurazione della tua app), non la stringa di connessione stessa.

Ho scoperto che puoi usare il seguente comando ...

SqlDatabase dbEngine = new SqlDatabase(connectionString);

non abbastanza versatile come l'oggetto Database ma funziona per il mio scopo.

Grazie a tutti!

Ha risolto il mio problema. Ho una singola app Web che utilizza molti database, in base al diverso sottodominio nell'URL per connettersi al diverso database. come:


  • abc.test.com ------ > utilizzando Db_projectABC

  • def.test.com ------ > utilizzando il db_ProjectDEF


Uso url-rewrite per analizzare il nome del sottodominio e utilizzo il nome del sottodominio per scegliere la stringa di connessione al database che è stata memorizzata nel database principale.

Grazie

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();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top