2013-02-05 65 views
1

似乎可以忽略源中可以爲空的類型屬性,並且不會將其複製到目標。使用automapper更新目標對象並將可爲空的類型屬性值設置爲空

考慮這些類:

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)); 

但我不想要設置每個屬性,可以你設置全球?或者還有其他方法可以實現嗎?

回答

2

似乎創造了每一個可空類型映射到自己喜歡:

Mapper.CreateMap<int?, int?>() 
    .ConvertUsing(v => v); 

似乎修復工作。但是我寧願使用所有可空類型的完整解決方案,然後逐個指定它們。容易錯過任何東西。

+0

謝謝。這解決了我的問題。這看起來像一個automapper錯誤,但我。 – RPM1984

相關問題