PDA

View Full Version : مبتدی: دلیل استفاده از شرط IF در هنگام عملیات Update/Remove از دیتا بیس



ehsan_kabiri_33
جمعه 12 اردیبهشت 1399, 09:54 صبح
سلام و سپاس. در اموزشهایی که از سایتها مختلف من جمله Udemy دیدم ( در دوره های asp.net mvc5 یا asp.net core) هنگام عملیات اپدیت یا حذف از شرط نال نبودن استفاده میکنند :


public void update(Category category)
{

Category ObjFromDB = _db.categories.FirstOrDefault(x => x.CategoryID == category.CategoryID);
if (ObjFromDB != null)
{
ObjFromDB.CategoryName = category.CategoryName;
_db.SaveChanges();
}
}


بعنوان نمونه در مثال فوق، زمانی که یک category برای اپدیت ارسال میشود، مسلما وجود داشته که از لیست انتخاب شده و دکمه ویرایش روی ان زده شده !! چرا مجددا با شرط if بررسی نال نبودن میشود در صورتی که اگر وجود نداشت کاربر انرا نمیدید تا بخواهد پاک کند یا ویرایش کند ؟!

مگر اینکه بگوییم چند کاربر به ان category دسترسی دارند، و همزمان در حال مشاهده ان هستند، موقعی که یک کاربر وارد صفحه ویرایش میشود، کاربر دیگر بلالفاصله انرا حذف میکند و کاربر اول هنوز در صفحه ویرایش می باشد و موقع ذخیره تغییرات احتمالا Exception error میبیند ؟!

ممنون

ShayanFiroozi
جمعه 12 اردیبهشت 1399, 16:25 عصر
سلام ،

یکی از دلایل این هست که سبک های برنامه نویسی زیادی وجود داره و معمولا هم هر کس اصرار میکنه که راه درست رو من میرم !! و واقعا هم ملاک خاصی برای این موضوع وجود نداره ،

در خصوص کد بالا ممکنه هرگز اون if به کار نیاد اما همونطور که خودتون اشاره کردین در یک سامانه پر تراکنش که هر چیزی توش ممکنه باید چک بشه ، چرا ؟ چون وظیفه اصلی برنامه نویس اینه که خطاها رو به خوبی مدیریت کنه و کمتر اونا رو به سمت کاربر ببره.

بنده شخصا بدلیل وسواسی که در این زمینه دارم به همین شکل عمل میکنم و حتی بعد از پاک شده در حالی که هیچ خطایی رخ نداده مجددا همون دیتا رو چک میکنم و اگر وجود نداشت به کاربر پیام میدم که رکورد با موفقیت حذف شده !


به هر حال سبک ها متفاوته ولی کار از محکم کاری عیب نمیکنه معمولا اینگونه کدها اصطلاحا Resource Consuming نیستند و بود و نبودشون در سرعت اجرا و یا مصرف منابع ـاثیری نداره.

ضمنا در کد بالا میبینید که Exception ها مدیریت نشدند پس وجود این if تقریبا ضروریه ، مخصوصا در یک سیستم چند کاربره ، فرض کنید مثلا شبکه شتاب که تراکنش هاش به هزاران در دقیقه میرسه همه چیز توش ممکنه !

pe32_64
یک شنبه 21 اردیبهشت 1399, 21:26 عصر
سلام و سپاس. در اموزشهایی که از سایتها مختلف من جمله Udemy دیدم ( در دوره های asp.net mvc5 یا asp.net core) هنگام عملیات اپدیت یا حذف از شرط نال نبودن استفاده میکنند :


public void update(Category category)
{

Category ObjFromDB = _db.categories.FirstOrDefault(x => x.CategoryID == category.CategoryID);
if (ObjFromDB != null)
{
ObjFromDB.CategoryName = category.CategoryName;
_db.SaveChanges();
}
}


بعنوان نمونه در مثال فوق، زمانی که یک category برای اپدیت ارسال میشود، مسلما وجود داشته که از لیست انتخاب شده و دکمه ویرایش روی ان زده شده !! چرا مجددا با شرط if بررسی نال نبودن میشود در صورتی که اگر وجود نداشت کاربر انرا نمیدید تا بخواهد پاک کند یا ویرایش کند ؟!

مگر اینکه بگوییم چند کاربر به ان category دسترسی دارند، و همزمان در حال مشاهده ان هستند، موقعی که یک کاربر وارد صفحه ویرایش میشود، کاربر دیگر بلالفاصله انرا حذف میکند و کاربر اول هنوز در صفحه ویرایش می باشد و موقع ذخیره تغییرات احتمالا Exception error میبیند ؟!

ممنون
باید قبل عملیات نوشتن این مورد رو کنترل کرد چون که Exception مدیریت نشده در کد .