[英]Automapper: Handling Nullable Properties for Object To Object Mapping
我正在使用Automapper 6.0.2。 我有一個帶有以下代碼的控制台應用程序。 我試圖通過放置對象到對象映射關系的條件來實現排序或部分更新功能。 所以我正在使用:
.ForAllMembers(opt => opt.Condition(
(source, destination, sourceMember, destMember) => sourceMember != null))
但是,似乎Mapper.Map(newViewModel, newModel)
在映射Mapper.Map(newViewModel, newModel)
期間將空值對象屬性重新創建為具有默認值的非空值形式。 我希望在newModel
下面的代碼中保持不變。
預期對象
但是我明白了
我該如何解決? 如果我檢查默認的DateTime和int值,則必須將int屬性的值設置為大於0。 我需要檢查null不是默認值
public class Program
{
public static void Main(string[] args)
{
Mapper.Initialize(config =>
{
config.CreateMap<ViewModel,Model>().ForAllMembers(opt => opt.Condition(
(source, destination, sourceMember, destMember) => sourceMember != null));
});
var newModel = new Model
{
Name = "My Name",
Age = 18,
DateOfBirth = new DateTime(2000, 1, 1)
};
var newViewModel = new ViewModel();
//Nulls should be ignored while mapping
Mapper.Map(newViewModel, newModel);
}
}
public class Model
{
public string Name { get; set; }
public int Age { get; set; }
public DateTime DateOfBirth { get; set; }
}
public class ViewModel
{
public string Name { get; set; }
public int? Age { get; set; }
public DateTime? DateOfBirth { get; set; }
}
只需按照以下方式更正您的映射
config.CreateMap<Model, ViewModel>().ForAllMembers(opt => opt.Condition(
(source, destination, sourceMember, destMember) => sourceMember != null));
然后您的映射器先使用源,然后再定位
Mapper.Map(newModel, newViewModel);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.