2014-02-07 75 views
0

這是一個說明問題的小代碼片段。AutoMapper不會在Nullable屬性上映射Null值,爲什麼?

[TestMethod] 
public void AutoMapper_MappingNullValue_ShouldMapNull() 
{ 
    //Arrange 
    var source = new DummySource { MyDate = null }; 
    var destination = new DummyDestination { MyDate = DateTime.Now }; 
    AutoMapper.Mapper.CreateMap<DummySource, DummyDestination>(); 

    //Act 
    var returnResult = AutoMapper.Mapper.Map(source, destination); 

    //Assert 
    Assert.IsNull(returnResult.MyDate); 
    Assert.IsNotNull(destination.MyDate); 
} 

private class DummySource 
{ 
    public DateTime? MyDate { get; set; } 
} 

private class DummyDestination 
{ 
    public DateTime? MyDate { get; set; } 
} 

這是怎麼發生在第一個斷言失敗?我希望結果有一個空值。實際上,returnResultdestination都是初始值。

+2

它不是失敗的第一個斷言。第二個斷言應該失敗,因爲你將'source'映射到'destination',因此'destination.MyDate'是'null'。使用'var returnResult = AutoMapper.Mapper.Map (source);'來保存現有的對象。 – Romoku

+0

@Romoku自己看看http://imgur.com/KG0XJVj –

+0

你正在使用哪個版本的AutoMapper?你的代碼適合我。 – sloth

回答

2

嘗試更新nuget包。

這固定在issue #310。實施更改的第一個版本是3.0.0

+0

謝謝你有一個愉快的一天 –

相關問題