그래서 이걸 가지고 있습니다.AutoMapper - 선택한 하위 속성을 유지하면서 중첩 매핑
public class Parent
{
public string SomeProperty { get; set; }
public Child ChildProperty { get; set; }
}
public class Child
{
public string ChildProperty { get; set; }
public string OtherChildProperty { get; set; }
}
public class Flat
{
public string SomeProperty { get; set; }
public string ChildProperty { get; set; }
}
그리고 나서 이렇게합니다.
Flat source = new Flat { SomeProperty = "test", ChildProperty = "test" };
Parent dest = GetParentFromDataContext();
Mapper.Map<Flat,Parent>(source,dest);
그런 나의 기대는 dest.ChildProperty.OtherChildProperty
는 여전히이 데이터 컨텍스트에서 가져온 때 그것이 무엇으로 설정되어 있다는 점이다. 그러나 나는 이것을하기 위해 고심하고있다.
내가 CreateMap
인 경우 "최상위 멤버로 해결해야 함"예외가 발생합니다. 다음과 같은 처리를 할 경우
Mapper.CreateMap<Flat,Parent>()
.ForMember(dest => dest.Parent.ChildProperty.ChildProperty,
options => options.MapFrom(source => source.ChildProperty))
.ForMember(dest => dest.Parent.ChildProperty.OtherChildProperty,
options => options.Ignore());
그러나, 다음 new Child {}
은 본질적으로 OtherChildProperty
을 클리어 데이터 컨텍스트에서 뽑아 Child
대체;
Mapper.CreateMap<Flat,Parent>()
.ForMember(dest => dest.Child
options => options.MapFrom(source => new Child { ChildProperty = source.ChildProperty }));
어떻게 매핑하고 무시할 하위 속성을 유지할 수 있습니까?