因此,按照此答案的建议,我在基本AutoMapper(3.3.1(配置中设置了一个字符串来修剪字符串映射,如下所示:
configuration.CreateMap<string, string>().ConvertUsing<StringToTrimmedStringConverter>();
这很好用,除了与我的数据库中的两个字段完全相同,出于互操作性原因需要保留空格。在我的数据模型中,我可以做些什么来映射到实体,以便在两个字符串字段之间映射时保留空格?我试过:
.ForMember(d => d.WhitespaceField,
opts => opts.ResolveUsing<WhitespaceStringResolver>
(m => m.WhitespaceModelField))
其中 WhitespaceStringResolver 只是一个无操作:
public class WhitespaceStringResolver : ValueResolver<string, string>
{
protected override string ResolveCore(string source)
{
return source;
}
}
但这行不通。我可以看到执行击中了解析器,但字符串最终还是被修剪了。
有没有办法忽略基本配置的映射而不修剪字符串,只是为了我明确想要忽略它的几个字段?
升级自动映射器版本不是我目前想做的事情。
最后的结果是添加
.AfterMap((model, entity) =>
{ entity.WhitespaceField = model.WhitespaceModelField; })
我也可以标记实体。WhitespaceField 忽略,如果我不需要字段到字段映射来使用按约定使用模型到实体映射进行搜索的库。