我创建了一个使用自动映射器的应用程序,一切似乎都已配置并在浏览模式下正常工作,但是在更新记录后,我得到以下映射错误: 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)。它也出现在使用映射器的其他页面上。但只有在我更新了管理面板中的记录之后。
2 回答
LEATH
TA贡献1936条经验 获得超6个赞
正如您的完整异常消息所述,映射器没有从Organisationto的映射ViewModelOrganisation。我不确定,但是反向映射旁边是否也不需要法线映射?所以尝试添加cfg.CreateMap<Organisation, ViewModelOrganisation>().
您也可以将代码简化为:
public ActionResult Detail(int id)
{
var org = _orgService.getOrganisationByOrgID(id);
var vm = Mapper.Map<ViewModelOrganisation>(org);
return View(vm);
}
MMTTMM
TA贡献1869条经验 获得超4个赞
在 global.asa 中初始化映射器之前,我在控制器本身中执行此操作。我未能从控制器中删除正在编辑文章记录的行(下):
Mapper.Initialize(cfg => cfg.CreateMap<Article, ViewModelArticle>());
这一定使启动时创建的映射无效,因此当我浏览网站的其余部分时出现错误。
经验教训...确保只初始化映射器一次!
- 2 回答
- 0 关注
- 190 浏览
添加回答
举报
0/150
提交
取消