클래스에 다른 필드를 추가하는 것은 저장할을 통해이 문제를 해결 :
예를 들어
는 테이블 내가이
CreateMap<StagingPerson, Person>()
.ForMember(dest => dest.SEXID,
m => m.ResolveUsing<SexLookupResolver>().FromMember(src => src.Gender));
public class SexLookupResolver : ValueResolver<string, int>
{
protected override int ResolveCore(string source)
{
int id = -1;
if (source == "Male")
id = dataAccess.GetGenderByString("M");
else if(source == "Female")
id = dataAccess.GetGenderByString("F");
else if(source == "?")
id = dataAccess.GetGenderByString("?");
else
id = dataAccess.GetGenderByString("?");
return id;
}
}
DATAACCESS과 같은 작업을 수행 할 수 있습니다 아래에 SEXID 그렇게 리졸버를 사용하여 저장 섹스의 문자열 버전. 맵핑이 문자열로 맵핑되도록 변경되고 SEXID 필드는 무시되고 나중에 DAL 조작 중에 설정됩니다.
CreateMap<StagingPerson, Person>()
.ForMember(dest => dest.SexString, u => u.MapFrom(src => src.Sex))
.ForMember(dest => dest.SEXID, u.Ignore()));
/// The source class
public class StagingPerson
{
/// holds "M", "F", "U", "?", etc
public string Gender {get;set;}
}
및
/// the destination class
public class Person
{
public int SEXID {get;set;}
// New property to store the source string value
// looked up in the Data Access Layer to determine the sexId
public string SexString {get;set;}
}