我創(chuàng)建了一個使用自動映射器的應(yīng)用程序,一切似乎都已配置并在瀏覽模式下正常工作,但是在更新記錄后,我得到以下映射錯誤: AutoMapper.AutoMapperMappingException was unhandled by user code HResult=-2146233088 Message=Missing type map configuration or unsupported mapping. Mapping types: Organisation -> ViewModelOrganisation我已經(jīng)在應(yīng)用程序啟動中注冊了 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(); }); }}當(dāng)應(yīng)用程序啟動并且我可以瀏覽該站點時,這會點擊確定。當(dāng)我保存記錄(更新)時會出現(xiàn)問題。信息會保存,但是當(dāng)我返回另一個頁面瀏覽該站點時,我會遇到映射錯誤。更新:我在控制器中映射如下: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); }錯誤發(fā)生在一行:vm = Mapper.Map(org, vm)。它也出現(xiàn)在使用映射器的其他頁面上。但只有在我更新了管理面板中的記錄之后。
2 回答

LEATH
TA貢獻(xiàn)1936條經(jīng)驗 獲得超7個贊
正如您的完整異常消息所述,映射器沒有從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貢獻(xiàn)1869條經(jīng)驗 獲得超4個贊
在 global.asa 中初始化映射器之前,我在控制器本身中執(zhí)行此操作。我未能從控制器中刪除正在編輯文章記錄的行(下):
Mapper.Initialize(cfg => cfg.CreateMap<Article, ViewModelArticle>());
這一定使啟動時創(chuàng)建的映射無效,因此當(dāng)我瀏覽網(wǎng)站的其余部分時出現(xiàn)錯誤。
經(jīng)驗教訓(xùn)...確保只初始化映射器一次!
- 2 回答
- 0 關(guān)注
- 224 瀏覽
添加回答
舉報
0/150
提交
取消