我知道这个问题在另一个线程中得到了回答。我尝试了建议的方法,但仍然无法正常工作。
这是我的实体和模型映射...
cfg.CreateMap<DocumentAmountModel, InputDocumentData>()
.ForMember(d => d.Amounts, o => o.MapFrom(s => s.Amounts));
子金额的映射
cfg.CreateMap<ItemAmountModel, Amount>()
//Ignore the Keys for update
.ForMember(a => a.Id, o => o.Ignore())
.ForMember(a => a.ItemId, o => o.Ignore())
而且我试图忽略实体中的 PK 和 FK,使其不被模型中的内容更新。
在服务层-实体从 Db 加载数据,然后调用映射器以更新除 FK 和 PK 之外的所有属性,如下所示。
var doc = _docDataR.GetAll()
.Where(d => d.Id==1)
.SingleOrDefault<InputDocumentData>();
Mapper.Map<DocumentAmountModel, InputDocumentData>(model, doc);
令我惊讶的是,Amount.Id 和 Amount.ItemId 总是在子 Amounts 上更新为 0。缺少任何明显的东西吗?
PS:实体实例“doc”不是代理,所以不是代理可能导致不正确的映射。