Откройте базу данных Microsoft.practices.EnterpriseLibrary с помощью только строки подключения - PullRequest
2 голосов
/ 30 декабря 2008

Я использую инструменты базы данных Microsoft.Practices.EnterpriseLibrary, и у меня возникают проблемы при создании новой базы данных с использованием просто информации строки подключения.

В идеале я хотел бы сделать следующее:

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

Можно ли создать базу данных, используя только строку подключения?

Если да, то как этого достичь?

Ответы [ 6 ]

13 голосов
/ 21 октября 2009

Вы также можете сделать


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

и вы сохраните универсальность объекта Database, но создадите его со строкой соединения.

5 голосов
/ 28 июля 2009

Я строю строку подключения на лету динамически со следующим, где 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;
0 голосов
/ 28 марта 2012
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();
0 голосов
/ 17 марта 2011

Это решило мою проблему. У меня есть одно веб-приложение, использующее много баз данных, в соответствии с другим поддоменом в URL для подключения к другой базе данных. такие как:


  • abc.test.com ------> с использованием Db_projectABC

  • def.test.com ------> с использованием db_ProjectDEF


Я использую url-rewrite для анализа имени субдомена и использую имя субдомена, чтобы выбрать строку подключения к базе данных, которая хранится в основной базе данных.

Спасибо

0 голосов
/ 05 января 2009

Я обнаружил, что вы можете использовать следующую команду ...

SqlDatabase dbEngine = new SqlDatabase(connectionString);

не так универсален, как объект базы данных, но он работает для моей цели.

Спасибо всем!

0 голосов
/ 01 января 2009

Er ... Это потому, что CreateDatabase ожидает имя строки подключения (как указано в файле конфигурации вашего приложения), а не самой строки подключения.

...