我正在尝试设置AutoMapper以将实体转换为DTO。我知道我应该在Mapper.CreateMap<Entity, DTO>()
之后使用.ForMember()
来设置自定义映射,但这似乎不是一个可用的方法。
编辑澄清:我不是在寻找我已经读过的文档的链接,也不是基本语法的解释。我使用的是答案和文档中描述的正确语法,例如:
Mapper.CreateMap<EFAddress, Address>()
.ForMember(dest => dest.Code, opt => opt.MapFrom(src => src.Name));
如果我在CreateMap<>中有一个无效的类型名,我可以看到"ForMember“是一个有效的方法,将鼠标悬停在上面会像我通常期望的那样显示方法签名。但是一旦我给它两个有效的类型,ForMember就会说它不能解析这个符号,就好像这个方法不可用一样。
在泛型类上有什么我不满足的约束吗?
谢谢
发布于 2012-01-12 22:31:16
最后,我认为这被证明是与ReSharper的某种不兼容。
ReSharper似乎导致Automapper代码显示不正确,但工作正常(尽管它显示为红色并带有错误消息)。卸载ReSharper完全解决了此问题。
发布于 2011-08-09 00:08:35
尝试以下语法:
Mapper
.CreateMap<Entity, EntityDto>()
.ForMember(
dest => dest.SomeDestinationProperty,
opt => opt.MapFrom(src => src.SomeSourceProperty)
);
或者如果源属性和目标属性具有相同的名称,只需:
Mapper.CreateMap<Entity, EntityDto>();
有关更多详细信息和其他映射场景,请查看documentation的相关部分。
发布于 2011-08-09 00:09:21
示例实现如下所示:
Mapper.CreateMap<Game, GameViewModel>()
.ForMember(m => m.GameType, opt => opt.MapFrom(src => src.Type))
我们需要映射这个属性,因为GameViewModel和Game的属性名称是不同的-如果它们是相同类型的,那么它将不需要ForMember
ForMember的另一个用途是忽略映射
Mapper.CreateMap<Game, GameViewModel>()
.ForMember(dest => dest.Prize, opt => opt.Ignore());
https://stackoverflow.com/questions/6985000
复制相似问题