Question

J'utilise les outils de base de données Microsoft.Practices.EnterpriseLibrary et je ne parviens pas à créer une nouvelle base de données en utilisant seulement les informations sur la chaîne de connexion.

Idéalement, j'aimerais procéder comme suit:

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

Est-il possible de créer une base de données en utilisant uniquement la chaîne de connexion?

Si oui, comment peut-il être réalisé?

Était-ce utile?

La solution

Vous pouvez également faire


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

et vous conserverez la polyvalence de l'objet de base de données, mais le créerez avec une chaîne de connexion.

Autres conseils

Je construis une chaîne de connexion à la volée de manière dynamique avec les éléments suivants, où ConnectionString est dans mon fichier .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;

Euh… C'est parce que CreateDatabase attend le nom d'une chaîne de connexion (comme spécifié dans le fichier de configuration de votre application), pas la chaîne de connexion elle-même.

J'ai découvert que vous pouvez utiliser la commande suivante ...

SqlDatabase dbEngine = new SqlDatabase(connectionString);

pas aussi polyvalent que l’objet Database mais cela fonctionne pour mon but.

Merci à tous!

Cela a résolu mon problème. J'ai une seule application Web utilisant plusieurs bases de données, en fonction des différents sous-domaines de l'URL permettant de se connecter à la base de données différente. tels que:

  • abc.test.com ------ > utilisation de Db_projectABC

  • def.test.com ------ > utilisation de db_ProjectDEF

J'utilise url-rewrite pour analyser le nom du sous-domaine, puis le nom de sous-domaine pour choisir la chaîne de connexion à la base de données stockée dans la base de données principale.

Merci

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();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top