- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有以下两个类:
public class ReferenceEngine
{
public Guid ReferenceEngineId { get; set; }
public string Description { get; set; }
public int Horsepower { get; set; }
}
public class Engine
{
public Guid Id { get; set; }
public string Description { get; set; }
public int Power { get; set; }
}
我正在使用 automapper 执行从 ReferenceEngine 到 Engine 的映射,反之亦然。请注意,属性 ReferenceEngineId
/Id
和 Horsepower
/Power
的名称不同。
下面的映射配置有效,并且成功映射了具有不同名称的属性:
public static void ConfigureMapperWorking()
{
AutoMapper.Mapper.CreateMap<ReferenceEngine, Engine>()
.ForMember(dest => dest.Description, opt => opt.MapFrom(src => src.Description)).ReverseMap();
AutoMapper.Mapper.CreateMap<ReferenceEngine, Engine>()
.ForMember(dest => dest.Id, opt => opt.MapFrom(src => Guid.Parse(src.ReferenceEngineId.ToString())))
.ForMember(dest => dest.Power, opt => opt.MapFrom(src => src.Horsepower));
AutoMapper.Mapper.CreateMap<Engine, ReferenceEngine>()
.ForMember(dest => dest.ReferenceEngineId, opt => opt.MapFrom(src => Guid.Parse(src.Id.ToString())))
.ForMember(dest => dest.Horsepower, opt => opt.MapFrom(src => src.Power));
}
然而,尽管我在末尾调用了方法 ReverseMap()
,但以下内容不起作用:
public static void ConfigureMapperNotWorking()
{
AutoMapper.Mapper.CreateMap<ReferenceEngine, Engine>()
.ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.ReferenceEngineId))
.ForMember(dest => dest.Description, opt => opt.MapFrom(src => src.Description))
.ForMember(dest => dest.Power, opt => opt.MapFrom(src => src.Horsepower)).ReverseMap();
}
我的问题是,当属性名称不同时,我们是否应该手动指定 TSource->TDestination 和 TDestination->TSource 映射?我认为 ReverseMap
的目的是避免我们手动指定双向映射。
最佳答案
ReverseMap 只创建一个简单的反向映射。例如它会自动配置
Mapper.CreateMap<Engine, ReferenceEngine>();
来自
Mapper.CreateMap<ReferenceEngine, Engine>();
要获得更复杂的东西,您必须手动配置它。
关于c# - Automapper - ReverseMap() 不执行映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33560936/
我有以下两个类: public class ReferenceEngine { public Guid ReferenceEngineId { get; set; } public s
当我创建映射 1->2 然后反转它时,我希望得到与映射 2->1 和反转相同的结果。正确的?但是AssertConfigurationIsValid一种情况成功,另一种情况失败。 例如, public
这是我的映射配置: Mapper.Initialize(config => { config.SourceMemberNamingConvention = new LowerUnderscor
我有这样的情况,我想将实体映射到 View 模型并返回。我必须使用 ForMember() 显式指定映射,因为它们的属性不共享完全相同的名称。这是我的类(class)的一个简短示例: public c
我正在尝试使用 AutoMapper 在表达式中的两个模型之间进行映射,但收到来自 AutoMapper 的错误:“错误映射类型”以及“未将对象引用设置为对象实例”的内部异常消息。 我按照 Githu
我是一名优秀的程序员,十分优秀!