PDA

View Full Version : استفاده از کلاس برای اتصال به دیتابیس به جای App.config در EF



davidrobert
یک شنبه 10 تیر 1397, 17:55 عصر
سلام و خسته نباشید.
من میخوام از رشته اتصال Ef استفاده کنم ولی نمیخوام این رشته اتصال درون App.config باشه میخوام این رشته اتصال داخل کلاس باشه و از کلاس رشته اتصال به دیتابیس بخوان و درون این قسمت

public partial class DbStore : DbContext
{
public DbStore()
: base("name=DbStore")
{

}
}

به هیچ عنوان سیستم App.config نشناسه و رشته اتصال به دیتابیس کلاس باشه دوستان راهی سراغ دارن من یک روش گیر آوردم که میاد مقدار داخل ConnectionString رو تغییر میده که اصلا مناسب ندیدم چون اون تغییرات داخل برنامه قابل دیدن هستش تنها راهی که کاربر به سورس و رشته اتصال من دسترسی پیدا نمیکنه کلاس هستش دوستان راهی سراغ دارید به جای App.config از کلاس استفاده کنم بگید ممنون میشم.

davidrobert
یک شنبه 10 تیر 1397, 19:39 عصر
بلخره از یه سایت دستورتش گیر آوردم https://stackoverflow.com/questions/10508798/is-there-a-way-to-change-connection-string-in-database-first
این هم روش کار با دستور

public partial class MyContext
{
public MyContext(string connStr)
: base(string.Format(@"metadata=res://*/MyContext.csdl|res://*/MyContext.ssdl|res://*/MyContext.msl;provider=System.Data.SqlClient;provi der connection string='{0}'", connStr))
{
}
}

sds1920
سه شنبه 12 تیر 1397, 06:54 صبح
بلخره از یه سایت دستورتش گیر آوردم https://stackoverflow.com/questions/10508798/is-there-a-way-to-change-connection-string-in-database-first
این هم روش کار با دستور

public partial class MyContext
{
public MyContext(string connStr)
: base(string.Format(@"metadata=res://*/MyContext.csdl|res://*/MyContext.ssdl|res://*/MyContext.msl;provider=System.Data.SqlClient;provi der connection string='{0}'", connStr))
{
}
}


ببینید دوست عزیز. این کاری که شما دارید انجام میدید یک ایراد داره و اونم Hard code کردن هست. یعنی اگر یه زمانی آدرس سرور تغییر کرد شما مجبورید یه نسخه دیگه ارائه بدید. پیشنهاد من به شما اینه که اگر قصد دارید امنیت برنامه رو افزایش بدید بهتره Connection String رو به صورت رمزنگاری شده داخل یه فایل دیگه قرار بدید و موقعی که Context قراره ایجاد بشه اطلاعات فایل رو بخونید. اینجوری وابستگی کد به Connection String هم از بین میره

davidrobert
سه شنبه 12 تیر 1397, 16:39 عصر
ببینید دوست عزیز. این کاری که شما دارید انجام میدید یک ایراد داره و اونم Hard code کردن هست. یعنی اگر یه زمانی آدرس سرور تغییر کرد شما مجبورید یه نسخه دیگه ارائه بدید. پیشنهاد من به شما اینه که اگر قصد دارید امنیت برنامه رو افزایش بدید بهتره Connection String رو به صورت رمزنگاری شده داخل یه فایل دیگه قرار بدید و موقعی که Context قراره ایجاد بشه اطلاعات فایل رو بخونید. اینجوری وابستگی کد به Connection String هم از بین میره
سلام و خسته نباشید.
دوست عزیز بنده این کد که قرار دادم آماده هستش که از اینترنت قرار دادم. ولی در اصل آدرس کانکشن من پویا هستش و هم تغییر میدم و همین طور مخفی میکنم آدرس و تمام سورس ام رو داخل برنامه و کسی به این راحتی از حالت کد در نیاره امنیتش اش حداقل برای کاربرا ضعیف رعایت شه و تمام کدهای من تبدیل میشه به صفر و یک