更新到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