عدم Map شدن ViewModel و Model در Automapper با اضافه شدن combobox
با سلام و احترام
من دو تا جدول دارم که گروه در یک جدول تعریف میشن و کلید خارجی جدول دیگری هستند
اما وقتی combobox اضافه میشه مپ ویو مدل و دیتا بیس انجام نمیشه قبل از اضافه شدن این کلید خارجی درست عمل می کرد اما با اضافه کردن combobox عمل مپ انجام نمیشه . از طریق کمبو باکس آی دی دسته بندی ارسال میشه و هیچ مشکلی نیست و ویو هم ولید هست فقط از خط مپ عبور نمی کنه
قابل ذکر هست که وقتی مستقیما اطلاعات رو داخل دیتا بیس ثبت می کنم و از ویو مدل استفاده نمی کنم و نیازی هم نیست که از مپ استفاده کنم مشکلی در ثبت اطلاعات و استفاده از کمبو باکس وجود ندارد اما من می خوام حتما از ویومدل استفاده کنم.
خطای زیر بعد از خط اتومپر داده میشه
AutoMapperMappingException: Missing type map configuration or unsupported mapping.
Mapping types:
Int32 -> Group
System.Int32 -> WebAutomationSystem.DataModelLayer.Entities.Group
lambda_method625(Closure , int , Group , ResolutionContext )
AutoMapperMappingException: Error mapping types.
Mapping types:
InformationViewModel -> PersonInformation
WebAutomationSystem.DataModelLayer.ViewModels.InformationViewModel -> WebAutomationSystem.DataModelLayer.Entities.PersonInformation
Type Map configuration:
InformationViewModel -> PersonInformation
WebAutomationSystem.DataModelLayer.ViewModels.InformationViewModel -> WebAutomationSystem.DataModelLayer.Entities.PersonInformation
Destination Member:
GroupID
کدهایی که برای این پروژه نوشته شده :
public class PersonInformation
{
[Key]
public int Id { get; set; }
public byte Type { get; set; }
public int Groupid { get; set; }
public string FirstName { get; set; }
public string Family { get; set; }
public byte Gender { get; set; }
public string MelliCode { get; set; }
public byte MaritalStatus { get; set; }
public string Mobile { get; set; }
public string EmailAddress { get; set; }
public string OfficeName { get; set; }
public string Registrationnumber { get; set; }
public string OfficeAddress { get; set; }
public string Officephone { get; set; }
public string OfficepostalCode { get; set; }
public string HomeAddress { get; set; }
public string Homephone { get; set; }
public string HomepostalCode { get; set; }
[ForeignKey("Groupid")]
public virtual Group GroupID { get; set; }
}
/////////////////
public class Group
{
[Key]
public int GroupId { get; set; }
public string GroupName { get; set; }
}
//////////////////
private void FillCombo()
{
List<GroupNameViewModel> ListGroup = _igroup.GroupNameList();
GroupNameViewModel List = new GroupNameViewModel
{
GroupId = -1,
GroupName = "انتخاب گروه"
};
//در خانه ی اولش مقدار را بنویس و مابقی را از دیتا بیس بیاور
ListGroup.Insert(0, List);
ViewBag.ListGroup = ListGroup;
}
/////////////////
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Add(InformationViewModel model, byte r1, byte r2, byte r3)
{
if (ModelState.IsValid)
{
try
{
var mapModel = _mapper.Map<PersonInformation>(model);
mapModel.MaritalStatus = r3;
mapModel.Gender = r2;
mapModel.Type = r1;
_context.PersonInformationUW.Create(mapModel);
_context.save();
FillCombo();
return RedirectToAction("index", "Information");
}
catch
{
FillCombo();
return RedirectToAction("ErrorView", "Home");
}
}
return View(model);
}
تصویر زیر هم نمونه ای از خروجی کار می باشد.
بسیار خوب هست که کدهاتون رو کامل قرار دادید. فقط فرمودید که از خطی که AutoMapper هست رد نمیشه. یعنی خطایی داره در این خط ؟ خب اگر خطایی دارید دقیقا متن خطا رو کاش قرار میدادید. در وافع شما سوال برای رفع خطا هست ولی به خطا اشاره نشده.
دقت کنید در هنگام map کردن باید model اصلی و مدلی که قراره اطلاعات map بشه باید فیلدهای با نام های یکسانی داشته باشن. از طرفی یک کلاس Profile هم باید داشته باشید که در اونجا مشخص بشه این دو مدل قرار هست به همدیگه map بشن.
در واقع خطای شما خطای 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();
}
}
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- نمایش صفحه در پنجره جدید با کلیک روی لینک (تگ a) در Asp
- افزودن مقادیر به صورت دستی به List دریافت شده از ریپازیتوری
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2