猿问

使用 POCO 类、Unity 和 EF6 更新记录后的 Automapper 错误

我创建了一个使用自动映射器的应用程序,一切似乎都已配置并在浏览模式下正常工作,但是在更新记录后,我得到以下映射错误:


  AutoMapper.AutoMapperMappingException was unhandled by user code

  HResult=-2146233088

  Message=Missing type map configuration or unsupported mapping.

  Mapping types:

  Organisation -> ViewModelOrganisation

我已经在应用程序启动中注册了 automapper:


protected void Application_Start()

    {

        App_Start.AutoMapperConfig.Initialize();

    }

然后在 Automapperconfig 中完成映射:


public class AutoMapperConfig

{


    public static void Initialize()

    {

        Mapper.Initialize(cfg =>

        {

            cfg.CreateMap<Organisation, ViewModelOrganisation>().ReverseMap();

            cfg.CreateMap<Article, ViewModelArticle>().ReverseMap();

            cfg.CreateMap<Organisation, ViewModelAdminOrg>().ReverseMap();

            cfg.CreateMap<Branch, ViewModelBranch>().ReverseMap();

        });


    }


}

当应用程序启动并且我可以浏览该站点时,这会点击确定。当我保存记录(更新)时会出现问题。信息会保存,但是当我返回另一个页面浏览该站点时,我会遇到映射错误。


更新:


我在控制器中映射如下:


public ActionResult Detail(int id)

    {

        Organisation org = new Organisation();

        ViewModelOrganisation vm = new ViewModelOrganisation();

        org = _orgService.getOrganisationByOrgID(id);

        vm = Mapper.Map(org, vm);

        return View(vm);

    }

错误发生在一行:vm = Mapper.Map(org, vm)。它也出现在使用映射器的其他页面上。但只有在我更新了管理面板中的记录之后。


回首忆惘然
浏览 192回答 2
2回答

LEATH

正如您的完整异常消息所述,映射器没有从Organisationto的映射ViewModelOrganisation。我不确定,但是反向映射旁边是否也不需要法线映射?所以尝试添加cfg.CreateMap<Organisation, ViewModelOrganisation>().您也可以将代码简化为:public ActionResult Detail(int id){&nbsp; &nbsp; var org = _orgService.getOrganisationByOrgID(id);&nbsp; &nbsp; var vm = Mapper.Map<ViewModelOrganisation>(org);&nbsp; &nbsp; return View(vm);}

MMTTMM

在 global.asa 中初始化映射器之前,我在控制器本身中执行此操作。我未能从控制器中删除正在编辑文章记录的行(下):&nbsp;Mapper.Initialize(cfg&nbsp;=>&nbsp;cfg.CreateMap<Article,&nbsp;ViewModelArticle>());这一定使启动时创建的映射无效,因此当我浏览网站的其余部分时出现错误。经验教训...确保只初始化映射器一次!
随时随地看视频慕课网APP
我要回答