【发布时间】:2021-03-18 12:16:06
【问题描述】:
我在 EntityFramework 上下文中有以下情况:
class File {
string FileName { get;set; }
virtual ICollection<CaseFile> CaseFiles {get;set;}
}
class Case {
string CaseRef { get;set; }
virtual ICollection<CaseFile> CaseFiles {get;set;}
}
class CaseFile {
virtual Case
virtual File
}
我们正在设置 AutoMapper,但我们不想暴露 CaseFile 模型,我们的 ViewModel 如下:
class CaseViewModel {
IEnumerable<FileViewModel> Files { get; set; }
}
AutoMapper 配置文件:
class CaseMappingProfile {
public CaseMappingProfile() {
CreateMap<Case, CaseViewModel>();
CreateMap<File, FileViewModel>();
CreateMap<CaseFile, FileViewModel>();
}
}
现在,我真的找不到将 CaseFile 映射到 FileViewModel 并告诉 AutoMapper 使用 CaseFile.File 属性作为源的方法。我意识到我可以简单地这样做:
CreateMap<CaseFile, FileViewModel>()
.ForMember(dest => dest.Prop1, src => src.File.Prop1)
.ForMember(dest => dest.Prop2, src => src.File.Prop2)
.ForMember(dest => dest.Prop3, src => src.File.Prop3);
但 File 实体与许多其他实体相关联,而不仅仅是案例。 而且我不想为每个关系实体都这样做。
CreateMap<CaseFile, FileViewModel>()
.ForPath(dest => dest, src => src.File);
不允许,你需要定位一个目标成员,你不能定位模型本身。
【问题讨论】:
标签: entity-framework automapper