首先,英语不是我的母语,所以请原谅。如何在AutoMapper 6中的源值为空时保留目标值?
源模型:
public class Task
{
public int Id { get; set; }
public string Title { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
目的地型号:
public class Task2
{
public int Id { get; set;}
public string Title { get; set; }
public string UserName { get; set; }
}
映射:
CreateMap<Task, Task2>()
.ForMember(dest => dest.UserName, opt => opt.MapFrom(s => s.FirstName + " " + s.LastName))
.ForAllMembers(opt => opt.Condition((src, dest, srcMember) => srcMember != null));
而现在的问题是:
Task t = new Task(){
Id = 0,
Title = "blablabla",
FirstName = null,
LastName = null
}
Task2 t2 = new Task2(){
Id = 0,
Title = "blablabla",
UserName = "Foo Bar"
}
Task2 tt = Mapper.Map<Task, Task2>(t, t2);
映射后,tt.UserName
将为空。 我想保留Task2.UserName
的值,但似乎不起作用。我能怎么做?
如果你不想映射任何东西到'UserName',那你为什么要配置映射器来映射它呢?此外,你的条件忽略了'null'值,但它在我看来,你的源值永远不能为null(尽管我不是100%确定AutoMapper是如何工作的!)。 –
请注意,测试样本不是很好 - 你有相同的ID和相同的标题。很难看到映射实际发生 –