افتح قاعدة بيانات Microsoft.practices.EnterpriseLibrary باستخدام سلسلة اتصال فقط

StackOverflow https://stackoverflow.com/questions/401339

سؤال

أنا أستخدم أدوات قاعدة بيانات 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");

ووعليك الإبقاء على براعة كائن قاعدة البيانات، ولكن إنشائه مع سلسلة اتصال.

نصائح أخرى

وأنا بناء سلسلة الاتصال على الطاير حيوي بما يلي حيث سلسلة_أحرف_الاتصال في بلدي .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;

وإيه ... ذلك لأن CreateDatabase تتوقع اسم <م> من سلسلة اتصال (كما هو محدد في ملف التكوين التطبيق الخاص بك)، وليس سلسلة الاتصال نفسها.

واكتشفت أنه يمكنك استخدام الأمر التالي ...

SqlDatabase dbEngine = new SqlDatabase(connectionString);

وليس تماما تنوعا مثل كائن قاعدة البيانات ولكنه يعمل لهدفي.

وشكرا للجميع!

لقد حل مشكلتي.لدي تطبيق ويب واحد يستخدم العديد من قواعد البيانات، وفقًا للنطاق الفرعي المختلف في عنوان URL للاتصال بقاعدة البيانات المختلفة.مثل:


  • abc.test.com ------>باستخدام Db_projectABC

  • def.test.com ------>باستخدام db_ProjectDEF


أستخدم إعادة كتابة عنوان url لتحليل اسم المجال الفرعي، واستخدم اسم المجال الفرعي لاختيار سلسلة اتصال قاعدة البيانات الخاصة به والمخزنة في قاعدة البيانات الرئيسية.

شكرًا

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();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top