В Automapper отсутствует конфигурация карты типов или ошибка неподдерживаемого сопоставления - PullRequest
0 голосов
/ 09 июля 2020

Я использую Auto mapper и получаю эту ошибку, я получаю эту ошибку в методе AddAsyn c (). Пожалуйста, помогите мне решить эту проблему.

Missing type map configuration or unsupported mapping.\r\n\r\nMapping types:\r\nDepartmentsViewModel -> Departments\r\nEmployeeAttendanceApp.ViewModels.DepartmentsViewModel -> EmployeeAttendanceApp.Models.StaffManagement.Departments

Мой класс

public interface IMapperConfig
{
    IMapper CreateMapper();
}

public class MapperConfig : IMapperConfig
{
    public IMapper CreateMapper()
    {
        var config = new MapperConfiguration(cfg =>
       {
           cfg.CreateMap<RegisterStaffs, RegisterStaffViewModel>();
           cfg.CreateMap<AttendanceRecorder, AttendanceRecorderViewModel>();
           cfg.CreateMap<ManageLeaves, ManageLeavesViewModel>();
           cfg.CreateMap<RegisterDevices, RegisterDevicesViewModel>();
           cfg.CreateMap<Departments, DepartmentsViewModel>();

       });

        return config.CreateMapper();
    }
}
      public class DepartmentsViewModel
{
    [Key]
    public int DepartmentId { get; set; }

    [DisplayName("اسم القسم/ الادارة")]
    [Required(ErrorMessage = "الرجاء ادخال اسم القسم")]
    public string DepartmentName { get; set; }

    [DisplayName("اضافة ملاحظات القسم")]
    public string Remarks { get; set; }
    public bool? IsUpdated { get; set; }
    public bool? IsDeleted { get; set; }
    public string CreatedBy { get; set; }
    public string DeletedBy { get; set; }
    public string UpdatedBy { get; set; }
    [DisplayName("عدد الموظفيين")]
    [Required(ErrorMessage =  " الرحاء إدخال عدد موظفيين القسم")]
    public long? StaffNumber { get; set; }

    public DateTime? CreatedDate { get; set; }

    public virtual ICollection<RegisterDevicesViewModel> RegisterDevices { get; set; }
    public virtual ICollection<RegisterStaffViewModel> RegisterStaffs { get; set; }
}
     public partial class Departments
{
    
    [Key]
    public int DepartmentId { get; set; }

    public string DepartmentName { get; set; }

    public string Remarks { get; set; }
    public bool? IsUpdated { get; set; }
    public bool? IsDeleted { get; set; }
    public string CreatedBy { get; set; }
    public string DeletedBy { get; set; }
    public string UpdatedBy { get; set; }
    public long? StaffNumber { get; set; }
    public DateTime? CreatedDate { get; set; }

    public virtual ICollection<RegisterDevices> RegisterDevices { get; set; }
    public virtual ICollection<RegisterStaffs> RegisterStaffs { get; set; }
}
       **I am getting the error in this method** 

      public async Task<bool> AddAsync(DepartmentsViewModel departmentsView)
    {
        try
        {
            var department = mapper.Map<DepartmentsViewModel, Departments>(departmentsView);
            await context.Departments.AddAsync(department);
            await context.SaveChangesAsync();
            return true;
        }
        catch(Exception ex)
        {
            logger.LogError(ex, ex.Message);
            return false;
        }
    }
       //here is startup file where I have registered the services  
        services.AddSingleton<IMapperConfig, MapperConfig>();

        services.AddTransient<IDepartmentManager, DepartmentManager>();

1 Ответ

0 голосов
/ 10 июля 2020

Я решил эту проблему, добавив .ReverseMap () в класс MapperConfig

cfg.CreateMap () .ReverseMap ();

, но я все еще не могу понять, почему раньше он не работал без него, потому что я видел различные примеры, никогда не использующие ReverseMap ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...