حل مشکل Update در AutoMapper

در این بخش از آموزش AutoMapper، می‌خواهیم به حل مشکل Update در AutoMapper بپردازیم. هنگام استفاده از AutoMapper برای به‌روزرسانی موجودیت‌ها در EF Core، ممکن است با مشکلاتی مواجه شوید، چرا که EF Core به صورت پیش‌فرض تغییرات اعمال شده روی موجودیت‌ها را شناسایی نمی‌کند. برای حل این مشکل می‌توانید مراحل زیر را دنبال کنید:

  • ابتدا موجودیت موردنظر (مانند مدل Manager) را از ViewModel به کمک AutoMapper نگاشت می‌کنیم.
var ManagerM = _mapper.Map<Manager>(ManagerVm);
  • سپس موجودیت نگاشت‌شده را به کانتکست EF Core متصل می‌کنید و ویژگی‌های مشخصی که تغییر کرده‌اند را به‌صورت دستی به عنوان تغییر‌یافته علامت‌گذاری می‌کنیم.

متد Attach : وقتی از Attach استفاده می‌کنید، EF Core شروع به ردیابی موجودیت می‌کند اما فرض می‌کند که این موجودیت تغییر نکرده است. به همین دلیل وضعیت موجودیت به صورت پیش‌فرض Unchanged تنظیم می‌شود. اگر بخواهید ویژگی‌های خاصی را به عنوان تغییر‌یافته مشخص کنید، باید این کار را به صورت دستی انجام دهید.

استفاده از Attach فقط وضعیت موجودیت را به Unchanged تغییر می‌دهد و تغییرات روی ویژگی‌ها را ردیابی نمی‌کند. این متد برای مواقعی مناسب است که نیاز دارید به طور دقیق کنترل کنید کدام ویژگی‌ها به‌روزرسانی شوند، بدون اینکه کل موجودیت تغییر‌یافته فرض شود.

متد Entry  : یکی از امکانات مهم کلاس DbContext است که برای دسترسی و مدیریت وضعیت یک موجودیت (Entity) در کانتکست داده استفاده می‌شود.

متد Property : می‌توانید به وپراپرتی ها دسترسی پیدا کنید و وضعیت آن‌ها را تغییر دهید. مثلاً، اگر بخواهید یک وپراپرتی را به عنوان تغییر‌یافته علامت‌گذاری کنیم.

_context.Attach(ManagerM);
_context.Entry(ManagerM).Property(a => a.Name).IsModified = true;
_context.Entry(ManagerM).Property(a => a.Family).IsModified = true;
_context.Entry(ManagerM).Property(a => a.Gender).IsModified = true;
_context.Entry(ManagerM).Property(a => a.Age).IsModified = true;
  • در نهایت، تغییرات را ذخیره می‌کنیدم.
await _context.SaveChangesAsync();

این روش باعث می‌شود که EF Core فقط ویژگی‌های مشخص‌شده را به‌روزرسانی کند و از ایجاد درخواست‌های اضافی برای ویژگی‌هایی که تغییر نکرده‌اند، جلوگیری شود. همچنین، این فرآیند برای سناریوهایی که فقط بخشی از ویژگی‌ها نیاز به به‌روزرسانی دارند، بسیار کارآمد است.

مشاهده در آپارات یا یوتیوب

محتوای ویدیویی این صفحه در سایت قابل مشاهده است. اما اگر عادت دارید توی پلتفرم آپارات یا یوتیوب ویدیوها را مشاهده کنید، می‌توانید از دکمه‌های زیر استفاده کنید.

تماشای ویدیوی حل مشکل Update در AutoMapper در آپارات و یوتیوب

اشتراک‌گذاری با یک کلیک

با یک کلیک، محتوای این صفحه را در شبکه‌های اجتماعی، ایمیل یا پیام‌رسان‌های مورد علاقه‌تان به‌سرعت به اشتراک بگذارید.

اشتراک‌گذاری صفحه حل مشکل Update در AutoMapper در شبکه‌های اجتماعی

نظرات شما برای ما ارزشمند است

متاسفانه تاکنون پیامی برای این مطلب ثبت نشده است. شما اولین شخصی باشید که پیام می‌گذارد.

نظرات کاربران

فرم افزودن دیدگاه

با ارسال نظرات خود ما را در ایجاد محتوای بهتر کمک کنید.

با خدمات تهران آی تی آشنا شوید

تهران آی تی با افتخار خدمات زیر را ارائه می‌دهد.