缺少类型映射配置或不受支持的映射AutoMapper

时间:2018-09-25 15:49:07

标签: c# asp.net-mvc automapper

我有此代码:

public ActionResult Details(string id, string detailsDate)
{
    if (id == null)
    {
        return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
    }

    var tblPersonnel = new tblPersonnel();

    using (var _context = new ScalehouseModel()) // for disposing
    {
        tblPersonnel = _context.tblPersonnels.Find(id);
    }


    if (tblPersonnel == null)
    {
        return HttpNotFound();
    }

    Mapper.Initialize(config => config.CreateMap<tblPersonnel, PersonnelDetailsVm>());
    PersonnelDetailsVm person = Mapper.Map<tblPersonnel, PersonnelDetailsVm>(tblPersonnel);

.... // and more but the error happens on the line above.

}

ajax成功之后,我将重定向到“详细信息”页面,您可以在上面看到该操作。我遇到这样的运行时错误:

enter image description here

我已经研究了this并处置了我的EF,但仍然无法正常工作,并得到了相同的错误。

该怎么办才能解决此问题?

1 个答案:

答案 0 :(得分:0)

为了使自动映射器工作,最好的方法是在管道中添加自动映射器配置。 这是你可以做的

第1步:创建一个静态的类映射配置文件,并将所有映射添加到该类中

public static class MappingProfile
{
    public static MapperConfiguration InitializeAutoMapper()
    {
        MapperConfiguration config = new MapperConfiguration(cfg =>
        {
            cfg.CreateMap<tblPersonnel, PersonnelDetailsVm>();
        });
        return config;
    } 
}

第2步:为了进行配置,请在Global.asax.cs的Application_Start()方法中注册自动映射器配置

 protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
        //Add AutoMapper configuration here.
        MappingProfile.InitializeAutoMapper();
    }

尝试一下。