ViewModel을 모델에 매핑하는 데 AutoMapper
을 사용하고 있습니다. 그러나 해당 원본 속성이 null
인 경우 속성을 매핑하지 않습니다.AutoMapper - 매핑 null 속성 건너 뛰기
public class Source
{
//Other fields...
public string Id { get; set; } //This should not be mapped if null
}
그리고 대상 클래스는 다음과 같습니다 :
public class Destination
{
//Other fields...
public Guid Id { get; set; }
}
그리고 여기가 매퍼 구성하는 방법입니다 : 내가 생각
Mapper.Initialize(cfg =>
{
//Other mappings...
cfg.CreateMap<Source, Destination>()
.ForAllMembers(opts => opts.Condition((src, dest, srcMember) => srcMember != null));
});
을 다음과 같이
내 소스 클래스입니다 매핑은 원본이 하나 인 경우 대상에서 속성이 덮어 쓰이지 않음을 의미합니다. null
. 하지만 분명히 틀렸어. Source.Id
이 null 일 때도 맵핑이 계속되는 경우에도 AutoMapper는 빈 Guid (00000000-0000-0000-0000-000000000000
)를 할당하여 기존 메시지를 덮어 씁니다. 소스가 null 인 경우 AutoMapper가 속성 매핑을 건너 뛰도록 올바르게 지시하는 방법은 무엇입니까?
참고 : : Guid<->String
변환에 문제가 있다고 생각하지 않습니다. 이러한 변환은 자동 매기기에서 작동하며, 필자는이를 사용했습니다. 문제는 null 일 때 Id 속성을 건너 뛰지 않는다는 것입니다.
음 ... 시도해 볼 것이지만, 왜 이것이 작동하지 않는지 이해할 수 없습니다. srcMember가 null이면 표현식이 false를 반환합니다. "srcMember! = null"동일한 상황을 확인하십시오. 왜 내 것이 아니라면 너 일해야하지? –
설명을 추가했습니다. –