使用automapper更新目标对象并将可为null的类型属性值设置为null
本文关键字:null 类型 属性 设置 更新 automapper 目标对象 使用 | 更新日期: 2023-09-27 17:57:31
似乎忽略了源中可为null的类型属性,并且没有将其复制到目标。
考虑以下类别:
public class Source
{
public int? Test { get; set; }
}
public class Destination
{
public int? Test { get; set; }
}
映射:
Mapper.CreateMap<Source, Destination>();
var source = new Source() { Test = 1 };
var destination = new Destination();
Mapper.Map<Source, Destination>(source, destination);
Assert.AreEqual(source.Test, destination.Test); //true
source.Test = null;
Mapper.Map<Source, Destination>(source, destination);
Assert.AreEqual(source.Test, destination.Test); //false (null, 1)
它在我使用时起作用
Mapper.CreateMap<Source, Destination>()
.ForMember(m => m.Test, o => o.ResolveUsing(m => m.Test));
但我不想按每个属性设置,你能在全局范围内设置吗?或者还有其他方法可以实现这一点吗?
似乎为每个可为null的类型创建映射就像:
Mapper.CreateMap<int?, int?>()
.ConvertUsing(v => v);
似乎可以解决问题。但我更希望有一个完整的解决方案,包含所有可为null的类型,然后逐个指定它们。很容易错过什么。