我试图在保存后将实体框架模型映射到视图模型。
//Map my incoming VM to a DTO and save it
Inquiry savedInquiry = InquiryLogic.Save(mapper.Map<InquirySpec>(inquiryVM));
//Map the returned Inquiry back to a VM and return it
return mapper.Map<JournalEntryInquiryVM>(savedInquiry);
我可以成功地将 Inquiry 映射到 a JournalEntryInquiryVM
,但是当我尝试映射savedInquiry
回 aJournalEntryInquiryVM
时,我得到以下异常,因为它实际上不仅仅是 an Inquiry
,它是由实体框架创建的动态代理:
缺少类型映射配置或不支持的映射。
Mapping types: Inquiry_66DF1FFF68CAC6E17FC0F72D753A523B9CCF3AFA55E82C2B5B910A95B0BFCC79 -> JournalEntryInquiryVM System.Data.Entity.DynamicProxies.Inquiry_66DF1FFF68CAC6E17FC0F72D753A523B9CCF3AFA55E82C2B5B910A95B0BFCC79 -> TLGI.CRM.MVCWeb.ViewModels.CustomerAccounts.JournalEntryInquiryVM
在代码中的这一点上,我的 DbContext 已经被释放,并且我已经检索到我需要的任何导航属性。我只需要它来进行映射,就好像它只是一个查询一样。
看起来这在旧版本的 AutoMapper 中是可能的,但我在 StackOverflow 或 Automapper wiki 上找不到任何关于版本 6.1.1(这是我正在使用的)或更高版本的答案。AutoMapper 变化如此之大,以至于很难找到任何相关的东西。