Откройте Microsoft.practices.База данных EnterpriseLibrary, используя только строку подключения
-
03-07-2019 - |
Вопрос
Я использую инструменты базы данных Microsoft.Practices.EnterpriseLibrary, и у меня возникли проблемы с созданием новой базы данных с помощью просто информация о строке подключения.
В идеале я хотел бы сделать следующее:
Database dbEngine = DatabaseFactory.CreateDatabase(
"Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;");
Возможно ли создать базу данных, используя только строку подключения?
Если да, то как этого можно достичь?
Решение
Вы также можете сделать
Database mydb = new EnterpriseLibrary.Data.Sql.SqlDatabase("connection string here");
и вы сохраните универсальность объекта базы данных, но создадите его со строкой подключения.
Другие советы
Я создаю строку подключения "на лету" динамически, используя следующее, где ConnectionString находится в моем файле .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...Это потому, что CreateDatabase ожидает, что Имя строки подключения (как указано в файле конфигурации вашего приложения), а не самой строки подключения.
Я обнаружил , что вы можете использовать следующую команду ...
SqlDatabase dbEngine = new SqlDatabase(connectionString);
не такой универсальный, как объект базы данных, но он подходит для моих целей.
Спасибо всем!
Это решило мою проблему.У меня есть одно веб-приложение, использующее множество баз данных, в соответствии с разными поддоменами в URL для подключения к разным базам данных.такие , как:
abc.test.com ------>использование Db_projectABC
def.test.com ------>использование db_ProjectDEF
Я использую url-rewrite для анализа имени поддомена и использую имя поддомена для выбора строки подключения к базе данных, которая хранится в основной базе данных.
Спасибо
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();