更新到Automapper v5与.NullSubstitute错误

我正在将我们的automapper库从版本3更新到版本5.2.0,并且出现此错误

System.InvalidOperationException: System.InvalidOperationException: No coercion operator is defined between types 'System.String' and 'System.Int32'

在两个复杂对象的映射设置中的这一行代码中。

cfg.CreateMap<objA, objB>()
.ForAllMembers(config => config.NullSubstitute(string.Empty));

我猜这发生了,因为它不能将int设置为null,现在它已经很明确了,在v3中它只是忽略了automapper。 有人可以证实吗? 我是否必须明确映射第5版中的每个成员类型?

对于这个映射,这个对象有ints,bools和strings。 有没有办法告诉它将字符串映射到String.Empty当它们为null并忽略其他类型?


Unfortinately这对于AM5行为NullSubstitute并且还ForAllMembers不支持过滤,并且不提供关于部件被映射的任何信息。

作为一种解决方法,我建议使用允许过滤并提供必要信息的ForAllPropertyMaps方法执行手动“修复”:

cfg.ForAllPropertyMaps(
    pm => "".Equals(pm.NullSubstitute) && pm.DestinationPropertyType != typeof(string),
    (pm, m) => pm.NullSubstitute = null
);
链接地址: http://www.djcxy.com/p/37419.html

上一篇: Updating to Automapper v5 has error with .NullSubstitute

下一篇: Automapper Mapping Exception with Model and private Properties