دسته بندی ها
11:41 1400/10/23

عدم Map شدن ViewModel و Model در Automapper با اضافه شدن combobox

مشخصات سوال کننده :
کاربر : Rouhbakhsh     امتیاز کاربر : 1     رتبه کاربر : 152
دسته بندی : Asp.net Core Asp.net Mvc جی کوئری

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 3258
1 نظر
saedbfd : لطفا سوال رو کامل تر قرار بدید. فیلد های جدول شما چی هستن ؟ کوئری که شما نوشتید و اگر احیانا جوین هایی انجام دادید چجوری هست ؟ صرفا با 2...3 خط توضیح و یک تصویر از خروجی کار نمیشه مشکل رو بررسی کرد. البته با توجه به همین تصویر میشه فیلدها رو حدس زد اما برای اینکه پاسخ دقیق تری دریافت کنید (نه یک پاسخ کلی) بهتره جزییات بیشتری از سوال ارائه بدید.

امتیاز کاربر : 1664   رتبه کاربر : 1   تاریخ ثبت : 03:59 1400/10/23
هوش مصنوعی

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

به نظر می رسد که مشکل شما مربوط به مپ کردن نوع GroupID است. در کد شما، GroupID به عنوان یک نوع مرجع تعریف شده اما در مدل View شما به صورت یک عدد صحیح (int) ارسال می شود. برای حل این مشکل، باید اطمینان حاصل کنید که AutoMapper از نوع مناسب برای GroupID استفاده می کند.

برای انجام این کار باید یک Mapper تنظیم کنید که نحوه تبدیل از Int به Group را مشخص کند. به عنوان مثال، شما باید یک تنظیم برای mapping داشته باشید:

var configuration = new MapperConfiguration(cfg => {
    cfg.CreateMap()
       .ForMember(dest => dest.GroupID, opt => opt.MapFrom(src => new Group { GroupId = src.Groupid }));
});

در اینجا، فرض بر این است که Groupid در InformationViewModel تعریف شده است و شما باید مطمین شوید که نام آن با نامی که در PersonInformation می خواهید مپ شود، همخوانی دارد.

همچنین اطمینان حاصل کنید که Groupid در InformationViewModel به درستی تعریف شده است. به این صورت:

public class InformationViewModel
{
    // سایر فیلدها
    public int Groupid { get; set; } // باید مطمین شوید که اینجا هم درست تعریف شده است
}

اگر در InformationViewModel فقط Groupid به عنوان عدد صحیح تعریف شده و شما می خواهید به GroupLink کنید، باید مطمین شوید که AutoMapper به درستی آن را تشخیص می دهد.

همچنین نیازی به تغییر در روش Add نخواهید داشت مگر اینکه تغییر جدیدی در نحوه ی ارسال داده ها ایجاد کنید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : pedram_khan 17:56 1400/10/23

بسیار خوب هست که کدهاتون رو کامل قرار دادید. فقط فرمودید که از خطی که AutoMapper هست رد نمیشه. یعنی خطایی داره در این خط ؟ خب اگر خطایی دارید دقیقا متن خطا رو کاش قرار میدادید. در وافع شما سوال برای رفع خطا هست ولی به خطا اشاره نشده.

دقت کنید در هنگام map کردن باید model اصلی و مدلی که قراره اطلاعات map بشه باید فیلدهای با نام های یکسانی داشته باشن. از طرفی یک کلاس Profile هم باید داشته باشید که در اونجا مشخص بشه این دو مدل قرار هست به همدیگه map بشن.

آموزش استفاده از mapper در Core

به این پاسخ امتیاز بدهید    1
امتیاز: 277 رتبه: 6
پاسخ دهنده : saedbfd 18:24 1400/10/25

در واقع خطای شما خطای Missing type map configuration or unsupported mapping در Automapper هست. در سوال شما دو Model وجود داره :

  • اول جدول PersonInformation
  • دوم هم ویومدل InformationViewModel

شما فیلدهای جدول PersonalInformation رو قرار دادید اما مشخص نشده که ویو مدل شامل چه فیلدهایی هست. اگر فرض کنیم که فیلدهای ویومدل هم همگی مشابه Model اصلی می باشداحتمالا خطا در کلاس Profile می باشد.

کلاس Profile شما باید چیزی مشابه با زیر باشه :

 

کلاس Profile

public class AutoMapping : Profile
{
   public AutoMapping()
   {
      CreateMap<PersonalInformation, InformationViewModel>().ReverseMap();
   }
}
به این پاسخ امتیاز بدهید    0
امتیاز: 1664 رتبه: 1
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود