ورود

View Full Version : حرفه ای: تغییر کانکشن استرینگ در حالت اجرا



Administrative
دوشنبه 09 مرداد 1396, 12:51 عصر
با عرض سلام و خسته نباشید
دوستان من با استفاده از کانفیگ منیجر کانکشن استرینگ برنامه رو در حالت اجرا تغییر میدم
145928
کانکشن به درستی تغییر پیدا میکنه.


مشکل من اینجاست که تا برنامه رو نبندم و دوباره باز نکنم اطلاعات همون کانکشن قبلی برای من لود میشه
مثلا ابتدا با کانکشن استرینگ A به بانک A1 وصل هستم
در هنگام اجرا کانکشن رو عوض میکنم به B و بانک B1

زمانی که سلکت میکنم یا درج میکنم روی بانک A1 اعمال میشه
میخوام وقتی کانکشن استرینگو عوض کردم یه جورایی Context از اول راه اندازی بشه (یا هر روشی که دوستان عزیز کم کنن)

(از EF استفاده میکنم)

Mahmoud.Afrad
سه شنبه 10 مرداد 1396, 19:54 عصر
به طریقی باید در متد change به نمونه هایی که از context ساختید دسترسی پیدا کنید و از طریق پراپرتی Database کانکشن استرینگ رو تغییر بدید.

Administrative
پنج شنبه 12 مرداد 1396, 08:54 صبح
سلام
ممنون از پاسختون

من هر دفعه Context رو New میکنم

145967

145968

145969

زمانی که من کانکشن رو تغییر میدم در کدوم قسمت Context رو تغییر بدم(مثلا در یک سازنده دیگه برای Context بسازم و کانکشن رو بهش بدم(البته سازنده خودش نام کانکشن رو میگیره و من نام کانکشن استرینگ جدید رو هم نام با قبلی میزارم))

Mahmoud.Afrad
پنج شنبه 12 مرداد 1396, 23:29 عصر
من متد تغییر کانکشن رو به صورت زیر ایجاد کردم
private void ChangeConnectionString(string newConnectionString)
{
Configuration exeConfiguration = ConfigurationManager.OpenExeConfiguration( ConfigurationUserLevel.None);
ConnectionStringSettings connStrSettings = exeConfiguration.ConnectionStrings. ConnectionStrings["Release_NewVersionEntities"];
if (connStrSettings != null)
connStrSettings.ConnectionString = newConnectionString;
exeConfiguration.Save( ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection( "connectionStrings");
}
سازنده ای که نوشتید نام کانکشن رو میگیره و از کانفیک لود میکنه منتها نه فایل، بلکه از ConfigurationManager که البته متوجه نمیشم چرا رفرش نمیشه.
حالا برای حل مشکل میتونید کانکشن رو خودتون از فایل کانفیگ دریافت و به سازنده بفرستید.

public Release_NewVersionEntities()
: base(ConfigurationManager.OpenExeConfiguration( ConfigurationUserLevel.None ).ConnectionStrings.ConnectionStrings[ "Release_NewVersionEntities"]. ConnectionString)
{

}

Administrative
شنبه 14 مرداد 1396, 12:08 عصر
سپاس فراوان از شما مشکل برطرف شد:قلب: