Raj*_* Sa 2 .net c# entity-framework automapper
我有下面的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; }
public System.DateTime UpdatedOnUtc { get; set; }
public virtual ICollection<BackInStockSubscription> BackInStockSubscriptions { get; set; }
public virtual ICollection<OrderItem> OrderItems { get; set; }
Run Code Online (Sandbox Code Playgroud)
当解析器访问上面代码中的BackInStockSubscriptions时,我收到错误.
有线索吗?
不要使用AutoMapper映射回您的域模型.它更复杂,有太多边缘情况,它只是没有提供与映射读取模型相同的ROI.
我写了这个工具,我从来没有这样做过.你有集合,延迟加载的实体,提取,合并,加载,这么多的东西都可能出错.
只是.别.做吧.
| 归档时间: |
|
| 查看次数: |
1532 次 |
| 最近记录: |