C# AutoMapper不映射可空属性上的空值,为什么?
下面是一个小的代码片段来说明这个问题C# AutoMapper不映射可空属性上的空值,为什么?,c#,.net,automapper,C#,.net,Automapper,下面是一个小的代码片段来说明这个问题 [TestMethod] public void AutoMapper_MappingNullValue_ShouldMapNull() { //Arrange var source = new DummySource { MyDate = null }; var destination = new DummyDestination { MyDate = DateTime.Now }; AutoMapper.Mapper.Cr
[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; }
}
[TestMethod]
public void AutoMapper_MappingNullValue_ShouldMapNull()
{
//安排
var source=new DummySource{MyDate=null};
var destination=new DummyDestination{MyDate=DateTime.Now};
AutoMapper.Mapper.CreateMap();
//表演
var returnResult=AutoMapper.Mapper.Map(源、目标);
//断言
Assert.IsNull(returnResult.MyDate);
Assert.IsNotNull(destination.MyDate);
}
私有类DummySource
{
公共日期时间?MyDate{get;set;}
}
私有类DummyDestination
{
公共日期时间?MyDate{get;set;}
}
为什么第一次断言失败了?我希望结果中有一个空值。事实上,
returnResult
和destination
都是初始值。尝试更新nuget包
这是固定的。实现此更改的第一个版本是。它没有使第一个断言失败。第二个断言应该失败,因为您正在将
源
映射到目标
,从而映射到目标。MyDate
为null
。使用var returnResult=AutoMapper.Mapper.Map(源代码)
保留现有对象。@Romoku自己看看您使用的是哪个版本的AutoMapper?您的代码对我来说运行良好。2.2.0.0是版本3.0.0中的行为不同。尝试更新nuget软件包。谢谢。祝您度过愉快的一天