• 1405/07/01

کاهش دفعات واکشی دیتا از بانک اطلاعاتی :

سلام استاد وقتتون بخیر باشه.

استاد بنده یه راهکاری رو انجام دادم که زمانی که واقعا نیاز هست دیتا واکشی بشه.

توی پروژه , ما به عنوان مثال  فرم افزودن شخص رو باز میکنیم . و از قبل  برای برناممون تعریف کردیم که وقتی کاربر افزودن شخص رو زد فرم افزودن باز بشه. و در اخرش ما اومدیم یه متودی رو ازش استفاده کردیم که اطلاعات رو بروزرسانی کنه 

مثل این

 private void btnAddPerson_Click(object sender, EventArgs e)
{
    frmAddPerson frmAddPerson = new frmAddPerson();
    frmAddPerson.ShowDialog();
    BindDgvPerson();
 

}

ولی اینجا یه مشکلی هست اگر در صفحه افزودن , کاربر منصرف شد از اضافه یک شخص و انصراف رو زد و یا صفحه افزودن رو بست . بازهم بی دلیل متود Bind ما فراخوانی میشه . یعنی عملا درخواستی که ما برای واکشی دیتا به بانک میدیم که دیتا رو بده بی دلیل هست چون کاربری اضافه نشده که بخواد از توی بانک اسمش رو نشون بده . و اگر دیتای ما دیتای زیادی باشه با هر باز و بستن فرم افزودن یا هر فرم دیگه ای که به این روش باشه  برنامه ما کند میشه .

راه حل این موضوع این است که ما در انتهای دکمه افزودن در فرم افزودن شخص جواب برای فرم در نظر بگیریم

   private void btnSave_Click(object sender, EventArgs e)
 {
     Person person = PersonMapper.MapToPerson(txtName.Text, txtFamily.Text, (int)nudAge.Value, txtEmail.Text, txtMobile.Text, rbTeacher.Checked);
     _personManagement.AddPerson(person);
     _personManagement.Save();
     this.DialogResult = DialogResult.OK;//این خط رو به اخر کد هامون قبل از بسته شدن فرم اضافه میکنیم
     this.Close();
     
 }

به این معنا هست که ما به فرم افزودن میگیم اگه ثبت موفق بود , جوابی که برمیگردونی ok هست.  

و در فرم لیست اشخاص که دیتا نشون داده میشه چک کنیم که جوابی که فرم افزودن برمیگردونه اگر Ok بود بیاد و دیتا رو Bind کنه ولی اگر این If نبود اگر فرم باز  و بسته میشد باز هم دیتا واکشی از بانک واکشی میشد

private void btnAddPerson_Click(object sender, EventArgs e)
{
    frmAddPerson frmAddPerson = new frmAddPerson();
    var dialogResult = frmAddPerson.ShowDialog();
    if (dialogResult == DialogResult.OK)
    {
        BindDgvPerson();
    }

}

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

سپاس از شما

  • 1405/07/01
  • ساعت 16:27

بسیار عالی 

تاثیر  زیادی خواهد داشت


  • 1405/07/01
  • ساعت 16:29

سپاس از توجه شما🌹