ورود

View Full Version : چک کردن فیلدهای تغییر داده شده هنگام update



hamzehsh
شنبه 07 فروردین 1400, 17:16 عصر
سلام
آیا راهی هست که بتوانیم قبل از اجرای دستور update در ef چک کنیم که آیا اصلا فیلدی تغییر کرده یا خیر؟
یا فقط همان فیلد را به روز رسانی کنیم؟
یعنی اگر کاربر فرم را باز کرد و هیچ تغییر نداد اصلا دستور بروز رسانی اجرا نشود و فرم بسته بشود؟


var model = await _uw.BaseRepository<person>().FindByIdAsync(viewmodel.PatientID);
if (model == null)
return NotFound();

if (ModelState.IsValid)
{

model.PhoneNumber = viewmodel.PhoneNumber;
model.Address = viewmodel.Address;
model.BirthDate = viewmodel.PersianBirthDate.ConvertShamsiToMiladi() ;
model.FirstName = viewmodel.FirstName;
model.LastName = viewmodel.LastName;
model.FatherName = viewmodel.FatherName;
model.Gender = viewmodel.Gender;

model.image = viewmodel.Image;

_uw.BaseRepository<Patient>().Update(model);
await _uw.Commit();




در Sql چک کردم به صورت خودکار فیلدهایی که تغییر نکرده را به روز رسانی نمیکند.
ولی کاربری که بی دلیل دائما edit میکند و ذخیره میکند را به چه صورتی میتوانی کنترل کرد؟
در جداولی که حجم دیتا بالاست باعث مشکل میشه

sayanpro
دوشنبه 16 فروردین 1400, 07:43 صبح
سلام. به نظرم باید از entityState ها استفاده کنید.
این لینک ها رو ببین:
لینک اول (https://stackoverflow.com/questions/11503797/entity-framework-update-check-if-the-record-has-changed)
لینک دوم (https://codereview.stackexchange.com/questions/37304/update-only-modified-fields-in-entity-framework)
لینک سوم (https://docs.microsoft.com/en-us/ef/core/change-tracking/change-detection)