باز کردن فایل app.config در فایل متنی و ذخیره تغییرات
سلام .چگونه میتوان فایل app.config رو با .txt باز کرد و تغییرات رو ذخیره کرد.البته با open whis مشکلی وجود نداره لطفا طریقه کدنویسی سی شارپ رو توضیح دهید متشکر
اینو نوشتم ولی اخطار میده :
using System.IO;
FileStream fileStream = new FileStream("AttachDbFilename=|DataDirectory|App.Co nfig.txt", FileMode.Open);
نقل قول: باز کردن فایل app.config در فایل متنی و ذخیره تغییرات
نقل قول: باز کردن فایل app.config در فایل متنی و ذخیره تغییرات
سلام وقت بخیر.فایل app.config یه فایل xml هست.اگه بخوای خودت به ماننده یه فایل txt بخونیش و تغییرات رو اعمال کنی مکافات داره دنبالش نرو .بهترین راهش استفاده از کلاس های موجود در دات نت جهت خوندن و نوشتن در فایل app.config هست.به آسانی در حالت runtime هم میتونی هم دسترسی و هم تغییرات رو اعمال کنی.من یه نمونه کد که در موقع runtime میتونه connectionString رو تغییر بده میزام
public static void ChangeConnectionString(string srv)
{
var connection = ConfigurationManager.ConnectionStrings["DatabaseContext"].ConnectionString;
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(connection) { DataSource = srv };
var config = ConfigurationManager.OpenExeConfiguration(Configur ationUserLevel.None);
var connectionStringsSection = (ConnectionStringsSection)config.GetSection("conne ctionStrings");
connectionStringsSection.ConnectionStrings["DatabaseContext"].ConnectionString = builder.ConnectionString;
config.AppSettings.SectionInformation.ForceSave = true;
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("connectionStr ings");
}
نقل قول: باز کردن فایل app.config در فایل متنی و ذخیره تغییرات
لازم به یاداوری ست که DatabaseContext نام کانکشن استرینگ در فایل app.config میباشد که موقع استفاده به نام connectionString موجود در پروژه خود جایگزین کن
نقل قول: باز کردن فایل app.config در فایل متنی و ذخیره تغییرات
ممنون اقای زاگروتی عزیز کدی که گذاشتین ConfigurationManagerبرای سیستم من آشنا نیست . دلیلش چی میتونه باشه
اینم اضافه کردم
using System.Configuration;
اینم کانکشن من
کد HTML:
<?xml version="1.0" encoding="utf-8"?><configuration> <connectionStrings> <add name="DDDDDEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl; provider=System.Data.SqlClient;provider connection string=" Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\DDDDD.mdf; Integrated Security=True;User Instance=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" /> </connectionStrings></configuration>
نقل قول: باز کردن فایل app.config در فایل متنی و ذخیره تغییرات
dllش رو در بخش rererences پروژه اضافه کن .system.configuration
نقل قول: باز کردن فایل app.config در فایل متنی و ذخیره تغییرات
بازم نشد فضای نامی اضافی خیلی به اپ اضافه میکنه باعث اخطار میشه:
<?xml version="1.0" encoding="utf-8"?><configuration>
<connectionStrings>
<add name="DDDEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;
provider=System.Data.SqlClient;provider connection string="
Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\DDD.mdf;
Integrated Security=True;Connect Timeout=30;User Instance=True;
MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
میخوام کد بالا در app.config رو به کد زیر تغییر بودم وصلام
<?xml version="1.0" encoding="utf-8"?><configuration>
<connectionStrings>
<add name="DDDEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;
provider=System.Data.SqlClient;provider connection string="
Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|1390\DDD.mdf;
Integrated Security=True;Connect Timeout=30;User Instance=True;
MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
فقط عدد 1390 رو اضافه کنم در زمان اجرا
نقل قول: باز کردن فایل app.config در فایل متنی و ذخیره تغییرات
متوجه 1390 که میخوای اضافه کنی نشدم.بیشتر توضیح بدین.یه توضیح هم بدین که میخوای کدوم بخش از کانکشن استریگ رو تغییر بدی
نقل قول: باز کردن فایل app.config در فایل متنی و ذخیره تغییرات
اگر میخوای نام دیتابیس ازDDD.mdf به 1390DDD.mdf تغییر کند کد تابع ارسال شده به جای سرور که داخل براکت نوشته شده
{ DataSource = srv}
به
{ InitialCatalog=1390DDD}
چون به صورت تابع فراخوانی میشود بهتر است
{ InitialCatalog= srv}
و موقع فراخوانی تابع بدین صورت انجام شود
ChangeConnectionString(1390DDD)
نقل قول: باز کردن فایل app.config در فایل متنی و ذخیره تغییرات
پیغام خطا رو بزار ببینم کمکی از دستم برمیاد
نقل قول: باز کردن فایل app.config در فایل متنی و ذخیره تغییرات
سول که ازاین واضحتر نمیشه .در کدهای نشون داده شده بالا اینو تغییر بدم
Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\DDD.mdf;
به
Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|1390\DDD.mdf;
1390 نام دیتابیس نیست . نام پوشه که دیتابیس DDD.mdf داخل اون قرارداره
نقل قول: باز کردن فایل app.config در فایل متنی و ذخیره تغییرات
ببخش کاک علی اشتباه از ادیتور فروم هست واسه من بهم ریخته نشون داد متوجه سوال نشدم به جای { InitialCatalog= srv}
{ AttachDBFilename=@"|DataDirector y|1390\DDD.mdf" }
چون به صورت تابع فراخوانی میشود بهتر است
{ AttachDBFilename
= srv}
و موقع فراخوانی تابع بدین صورت انجام شود
ChangeConnectionString(@"|DataDirector y|1390\DDD.mdf");
نقل قول: باز کردن فایل app.config در فایل متنی و ذخیره تغییرات
باتشکر من که هرکاری کردم تغییر نکرد . دوستان که به نتیجا رسیدن ممنون میشم کد رو اینجا برزارند.تغغیر متن app.cpnfigبا کد نویسی
با این روش انجام بدم بهتره
https://barnamenevis.org/showthread.p...tity-Framework
نقل قول: باز کردن فایل app.config در فایل متنی و ذخیره تغییرات
نقل قول: باز کردن فایل app.config در فایل متنی و ذخیره تغییرات
نمونه های بالا خوبه ولی مشکلی وجود داره هنگام پشتیبان گبری
چکار کنم که هر شرکت بتونه فقط پشتیبان خودشو بازیابی کنه . چون کاربر شاید روی شرکت الف کارکنه و یک پشتیبان بنام aa.bakبسازه بعد روی شرکت ب کارکنه یادش بره ازفایل aa.bak بازیابی رو انجام بده دیگه میدونید چی میشه
تمام اطلاعات شرکت ب پاک میشه.لطفا اگر راهی رو پیشنهاد میدین ارائه فرمایید ممونم میشم.هر شرکت پشتیبان خودشو قبول کنه