マッピングのために値を検索する必要があるときに、データベースの呼び出しを処理する別の方法はありますか? マッピング ロジック内でデータベース呼び出しを行うのは見苦しく思えます。これは他にどのように処理されますか?
たとえば、テーブルには SEXID が格納されるため、以下のリゾルバーを使用して次のようなことができます
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;
}
}
データアクセス:
public int GetGenderByString(string gender)
{
string sql = "select sexid from Sexes where sex = '" + gender "'";
int sexid = .....
......
return sexid;
}