دسته بندی ها
01:18 1399/06/26

دلیل خطای Missing type map configuration or unsupported mapping در Automapper

مشخصات سوال کننده :
کاربر : fateme     امتیاز کاربر : 1635     رتبه کاربر : 2
دسته بندی : Asp.net Core Asp.net Mvc

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 8656
1 نظر
Rouhbakhsh : باسلام و احترام جواب این سوال پیدا شد؟؟

امتیاز کاربر : 1   رتبه کاربر : 152   تاریخ ثبت : 08:23 1400/10/25
هوش مصنوعی

پاسخ هوش مصنوعی

خطای "Missing type map configuration or unsupported mapping" در AutoMapper به این معناست که شما برای نوع های مشخص شده در متد CreateMap پیکربندی مناسب ایجاد نکرده اید یا AutoMapper قادر به شناسایی انواع مورد نظر نیست.

برای حل این مشکل، لطفاً مراحل زیر را بررسی کنید:

  1. اطمینان حاصل کنید که کلاس AutoMapping به درستی به AutoMapper اضافه شده است. اگر services.AddAutoMapper(typeof(Startup)); را دارید، اطمینان حاصل کنید که AutoMapping در فضای نام و اسمبلی قابل دسترس است.

  2. بررسی کنید که آیا در کد خود از روش CreateMap به درستی استفاده کرده اید. به طور خاص بررسی کنید که نوع های CourseSection و CourseSectionViewModel درست شناسایی شده اند.

  3. شما همچنین می توانید نوع های کلاس ها را به صورت واضح تر در CreateMap مشخص کنید:

  4. CreateMap();
  5. در نهایت، اطمینان حاصل کنید که در جایی از کد خود، به درستی از مپینگ استفاده می شود. به عنوان مثال، برای استفاده از AutoMapper، باید از IMapper برای انجام مپینگ استفاده کنید:

  6. CourseSectionViewModel viewModel = _mapper.Map(courseSection);

اگر هنوز با خطا مواجه هستید، می توانید به دقت پیغام خطا را بررسی کنید و اطمینان حاصل کنید که نسخه های مورد استفاده از AutoMapper و .NET Framework هماهنگی دارند. ممکن است همچنین نیاز به پاکسازی (clean) و ساخت مجدد (rebuild) پروژه داشته باشید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : saedbfd 23:01 1399/06/29

ظاهرا همه چیز در پروژه شما درست هست. چند تا لینک رو بهتون معرفی می کنم امیدوارم که به دردتون بخوره

Automapper - Missing type map configuration or unsupported mapping

Missing type map configuration or unsupported mapping in Abp version 4.8.0

Missing type map configuration or unsupported mapping error in Automapper

به این پاسخ امتیاز بدهید    0
امتیاز: 1664 رتبه: 1
پاسخ دهنده : hamid_b 17:33 1401/02/03

این خطا برای منم به وجود اومد و تونستم حلش کنم. البته نمی دونم دقیقا موردی که برای من به وجود اومده با اشکال شما یکسان باشه ولی تجربه خودم رو در این رابطه بهتون میگم.

ببینید بنده یک جدول به نام adminSiteQuestionCategory دارم و یک مدل به نام BuyQuestionBankViewModel دارم که قراره با هم map بشن.

جدول adminSiteQuestionCategory

public class AdminSiteQuestionCategory
{
   [Key]
   public int AdminSiteQuestionCategoryID { get; set; }
   public string AdminSiteQuestionCategoryName { get; set; }
   public long Price { get; set; }
   public long DiscountPrice { get; set; }
   public string Picture { get; set; }
}

مدل BuyQuestionBankViewModel

public class BuyQuestionBankViewModel
{
   public int AdminSiteQuestionCategoryID { get; set; }
   public string AdminSiteQuestionCategoryName { get; set; }
   public long DiscountPrice { get; set; }
   public string Picture { get; set; }
}

 

در کلاس Automap هم دستور زیر رو نوشتم :

public class AutoMap : Profile
{
   public AutoMap()
   {
      CreateMap<AdminSiteQuestionCategory, BuyQuestionBankViewModel>().ReverseMap();
   }
}

و در نهایت به صورت زیر mapping رو انجام دادم: 

public IActionResult Index()
{
   var myModel = _mapper.Map<BuyQuestionBankViewModel>(_context.adminSiteQuestionCategoryUW.Get());
   return View(myModel);
}

بعد از اجرای پروژه با خطای زیر روبرو شدم :

'Missing type map configuration or unsupported mapping.'

نکته : بنده یک نکته ای رو اینجا متوجه شدم. من قصد داشتم توسط دستور زیر که یک لیست از رکوردها رو برمیگردونه Model رو مقداردهی کنم. در حالی که مدل (یعنی BuyQuestionBankViewModel) یک کلاس هست و باید حتما یکبار یک نمونه ازش ساخته بشه.

_context.adminSiteQuestionCategoryUW.Get()

 

راه حل مشکل :

خب پس بنابراین اومدم و دستورم به صورت زیر تغییر دادم و مشکل حل شد :

public IActionResult Index(IEnumerable<BuyQuestionBankViewModel> model)
{
   var myModel = _mapper.Map(_context.adminSiteQuestionCategoryUW.Get(), model);
   return View(myModel);
}

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

ویرایش شده در شنبه 3 اردیبهشت 1401 ساعت 17:34:25
به این پاسخ امتیاز بدهید    1
امتیاز: 518 رتبه: 4
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود