我有下面的viewmodel,它与域模型相同(但包含一些额外的属性).
public class ProductViewModel
{
public string Name { get; set; }
public string ShortDescription { get; set; }
public string FullDescription { get; set; }
public string AdminComment { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
从上面看,我只在视图页面中使用了一些属性.
当我使用Automapper映射我现有的模型时,我的所有viewmodel字段都被映射到domainmodel字段.
Mapper.Map(productViewModel, product);
Run Code Online (Sandbox Code Playgroud)
由于上面的映射,所有未使用的viewmodel字段(默认情况下未使用的viewmodel字段具有NULL值)都映射到域模型.它用NULL值替换我现有的数据库数据.
有没有办法从映射中排除NULL和默认属性值?
笔记:
我尝试了以下不起作用的代码:
Mapper.CreateMap<ProductViewModel, Product>()
.ForAllMembers(opt =>
opt.Condition(srs => (!srs.IsSourceValueNull || IsDefaultValue(srs.SourceValue, srs.SourceType))));
Run Code Online (Sandbox Code Playgroud)
编辑:
尝试Automapper后,使用自定义解析器跳过空值(感谢abatishchev).我已经使用了解析器,但得到错误缺少类型映射配置或不支持的映射
我的代码片段:
...
public System.DateTime CreatedOnUtc { get; set; } …Run Code Online (Sandbox Code Playgroud)