我有这种情况,我想将实体映射到viewmodel并返回.我必须使用ForMember()显式指定映射,因为它们的属性不共享完全相同的名称.这是我的类看起来如何的简短示例:
public class PartTwo {
public int Integer { get; set; }
}
public class PartTwoViewModel {
public int PartInteger { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想用这种方式使用它们:
Mapper.CreateMap<PartTwo, PartTwoViewModel>()
.ForMember(dst => dst.PartInteger, opt => opt.MapFrom(src => src.Integer))
.ReverseMap();
var partTwoViewModel = new PartTwoViewModel() { PartInteger = 42 };
var partTwo = Mapper.Map<PartTwoViewModel, PartTwo>(partTwoViewModel);
Assert.AreEqual(partTwoViewModel.PartInteger, partTwo.Integer);
Run Code Online (Sandbox Code Playgroud)
但它与PartInteger属性不匹配.(整数为0.)
有没有办法让这项工作?(当两个类的属性具有相同的名称时.)我是否必须在方法ForMember()中设置某种选项?
这可能是一个愚蠢的问题!(n00b到AutoMapper和时间短!)
我想使用AutoMapper从EF4实体映射到ViewModel类.
1)如果我打电话
CreateMap<ModelClass, ViewModelClass>()
Run Code Online (Sandbox Code Playgroud)
然后我也需要打电话
CreateMap<ViewModelClass, ModelClass>()
Run Code Online (Sandbox Code Playgroud)
执行相反的操作?
2)如果两个类具有相同的属性名称,那么我是否需要一个CreateMap语句,或者这只是针对"特定/自定义"映射?