Pergunta

Eu estou usando as ferramentas Microsoft.Practices.EnterpriseLibrary de banco de dados e eu estou tendo problemas para criar um novo banco de dados usando apenas as informações seqüência de conexão.

Idealmente, eu gostaria de fazer o seguinte:

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

É possível criar um banco de dados usando apenas a seqüência de conexão?

Se sim, como ela pode ser alcançada?

Foi útil?

Solução

Você também pode fazer


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

e você vai reter a versatilidade do objeto de banco de dados, mas criá-lo com uma seqüência de conexão.

Outras dicas

Estou construindo uma seqüência de conexão em tempo real de forma dinâmica com a seguinte onde ConnectionString está na minha 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 ... Isso porque CreateDatabase espera que o nome de uma seqüência de conexão (conforme especificado no arquivo de configuração do seu aplicativo), não a seqüência de conexão em si.

Eu descobri que você pode usar o comando a seguir ...

SqlDatabase dbEngine = new SqlDatabase(connectionString);

não tão versátil como o objeto de banco de dados, mas funciona para o meu propósito.

Obrigado a todos!

É resolveu o meu problema. Eu tenho um único aplicativo web usando muitos banco de dados, de acordo com o diferente subdomínio no URL para conectar-se a diferente banco de dados. tais como:


  • abc.test.com ------> usando o Db_projectABC

  • def.test.com ------> usando o db_ProjectDEF


Eu uso url-reescrita para analisar o nome de subdomínio, e usar o nome de subdomínio para escolher a sua seqüência de conexão de banco de dados que armazenou no banco de dados principal.

Graças

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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top