Öffnen Microsoft.practices.EnterpriseLibrary Datenbank mit nur einer Verbindungszeichenfolge
-
03-07-2019 - |
Frage
Ich bin mit den Microsoft.Practices.EnterpriseLibrary Database Tool und ich habe Probleme beim Erstellen eine neue Datenbank mit nur der Verbindungszeichenfolge Informationen.
Im Idealfall würde Ich mag folgendes tun:
Database dbEngine = DatabaseFactory.CreateDatabase(
"Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;");
Ist es möglich, eine Datenbank mit nur die Verbindungszeichenfolge zu erstellen?
Wenn ja, wie kann es erreicht werden?
Lösung
Sie können auch tun
Database mydb = new EnterpriseLibrary.Data.Sql.SqlDatabase("connection string here");
und Sie werden die Vielseitigkeit des Database-Objekts beibehalten, aber es mit einer Verbindungszeichenfolge erstellen.
Andere Tipps
Ich bin der Aufbau eine Verbindungszeichenfolge on the fly dynamisch mit dem folgenden, wo Connectionstring in meinem .config ist
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;
Ihm ... Das ist, weil die Createdatabase name erwartet von einer Verbindungszeichenfolge (wie in Ihrem App-Konfigurationsdatei angegeben), nicht die Verbindungszeichenfolge selbst.
Ich entdeckte, dass Sie den folgenden Befehl verwenden können ...
SqlDatabase dbEngine = new SqlDatabase(connectionString);
nicht ganz so vielseitig wie das Datenbankobjekt, aber es funktioniert für meinen Zweck.
Danke an alle!
Es ist mein Problem gelöst. Ich habe eine einzelne Web-App viele Datenbank nach dem anderen Sub-Domain in der URL der unterschiedlichen Datenbank zu verbinden. wie zum Beispiel:
-
abc.test.com ------> die Db_projectABC mit
-
def.test.com ------> die db_ProjectDEF mit
Ich verwende url-rewrite den Sub-Domain Namen zu analysieren, und verwenden Sie den Sub-Domain Namen es ist Datenbank-Verbindungszeichenfolge, die in der Hauptdatenbank gespeichert zu wählen.
Danke
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();