حل مشکل Update در AutoMapper

تهران آی تی / برنامــه نویــسـی / حل مشکل Update در AutoMapper

حل مشکل 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 فقط ویژگی‌های مشخص‌شده را به‌روزرسانی کند و از ایجاد درخواست‌های اضافی برای ویژگی‌هایی که تغییر نکرده‌اند، جلوگیری شود. همچنین، این فرآیند برای سناریوهایی که فقط بخشی از ویژگی‌ها نیاز به به‌روزرسانی دارند، بسیار کارآمد است.

جستجو کنید
دسترسی سریع
دسته ها

طراحی و پیاده سازی پروژه های طراحی سایت دانشجویی

انجام، اجرا و طراحی پروژه های طراحی سایت برای دانشجویان با HTML CSS PHP ASP.NET JAVA و ... با کمترین هزینه. برای مشاهده نمونه کارها و یا دریافت مشاوره رایگان از تیم طراحی سایت تهران آی تی با ما در تماس باشید. ما بهترین پروژه های طراحی سایت را با حداقل هزینه برای شما طراحی میکنیم - مشاوره رایگان 09121486770

مــشاوره و مشاهده نمونه کارها

مطالب مرتبط

لطفا از مطالب مرتبط با این پست دیدن فرمایید

جــذاب های هفته

از پربازدیدترین مطالب تهران آی تی در هفته ای که گذشت دیدن فرمایید

باورکردنی نیست فقط با 300 هزار تومان

طراحی سایت شما + طراحی اپلیکیشن هدیه و رایگان
این یک حراج است در مدت زمان محدود - شرکت های زیادی سایت های ارزان طراحی میکنند اما آیا کیفیت لازم را دارا هستند؟ طراحی سایت ارزان به همراه اپلیکیشن رایگان هدیه برای اولین بار توسط تهران آی تی مخصوص سازمان ها و کسب و کار های کوچک و بزرگ و حتی جدید تیم طراحی سایت تهران آی تی در کنار شماست تا شناخته شوید - مشاوره رایگان 09121486770

مــشاوره و مشاهده نمونه کارها

پشتیبانی 24 ساعته

تیم تهران آی تی در هفت روز هفته و 24 ساعت روز آماده پاسخ گویی به سوالات کاربران و ارائه مشاره رایگان میباشد