エンティティをビューモデルにマップして戻したい場合があります。それらのプロパティが正確に同じ名前を共有しないため、ForMember()で明示的にマッピングを指定する必要があります。Automapper:ReverseMap()とForMember()を使用した双方向マッピング
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);
しかし、それは整数にプロパティPartIntegerと一致していません:
public class PartTwo {
public int Integer { get; set; }
}
public class PartTwoViewModel {
public int PartInteger { get; set; }
}
そして、私は彼らにこの方法を使用する:ここでは私のクラスがどのように見えるかの簡単な例です。 (整数は0です)
これを行う方法はありますか? (両方のクラスのプロパティが同じ名前を持つ場合、それは動作します)メソッドForMember()で何らかのオプションを設定する必要がありますか?
はい、これは機能します。私はForMember()を介してマップする多くのプロパティを持っているので、逆マッピングを定義する必要はないと考えました。 – toni
ここに例があります:https://dotnetfiddle.net/0x8csL – Sergey