[英]Exclude all parent properties when using IncludeMembers
public sealed class LookupDetails
{
public long Id { get; set; }
public string Name { get; set; }
}
public sealed class File
{
public long Id { get; set; }
public string Name { get; set; }
}
public sealed class UserFile
{
public long Id { get; set; }
public File File { get; set; }
}
CreateMap<UserFile, LookupDetails>()
.IncludeMembers(x => x.File);
CreateMap<File, LookupDetails>();
我想让它作为投影, UserFile.File.Id => LookupDetails.Id
和UserFile.File.Name => LookupDetails.Name
,但它需要Id
来自UserFile.Id
。
我试过ForAllMembers(x => x.Ignore())
和ForAllOtherMembers(x => x.Ignore())
- 没有帮助。
另外,我使用的是可查询的扩展,所以我仅限于基于表达式的配置。
我认为您需要手动映射吗? 这有帮助吗?
CreateMap<UserFile, LookupDetails>()
.ForMember(lookupDetails => lookupDetails.Id, options => options.MapFrom(userFile => userFile.File.Id))
编辑:
这个映射看起来很奇怪(而且有点奇怪)。 人们可能希望让事情变得简单易懂。 具有实际上是文件 ID 的 Id 的LookupDetails
选项可能并不简单。
如果这是一个选项,请尝试简化模型结构。 让每个实体都有自己的 ID,该 ID 与其他 ID 分开。 例如, LookupDetails.Id
和LookupDetails.FileId
您在滥用IncludeMembers
。 您只需要
CreateMap<UserFile, LookupDetails>().ConvertUsing((s, _, context) => context.Mapper.Map<LookupDetails>(s.File));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.