我为子集合设置了延迟加载 我想用子对象发布我的对象,但是在映射时,它将null子对象转换为空子对象。对于我使用的,
e.g。
.ForMember(d => d.Taxes,
opt => opt.Condition(d => d.Taxes != null));
效果不佳。 当dto子对象为null时,使用ConstructUsing方法将set子对象设置为null,当dto子对象只带有ID属性时,也使用id获取完整模型。
用于构造子对象
e.g。
.ConstructUsing((Func<ResolutionContext, dao.TaxRate>)(rc=>
AutoMapperNHibernateFactory<dto.TaxRate, dao.TaxRate>.Create(rc)))
构造方法:
public class AutoMapperNHibernateFactory<dto, dao>
where dto : Dinerware.WebService.Public.DTO.Model
where dao : Dyno.DAO.Model, new()
{
public static dao Create(ResolutionContext rc)
{
Int64? Id = ((dto)rc.SourceValue).Id;
if (Id.HasValue && Id.Value > 0)
return DinerwareDaoController<dao>.GetModelById(((dto)rc.SourceValue).Id.Value);
return new dao();
}
}
它适用于dto子对象null但不适用于dto子对象仅带有ID。上面的方法返回完整的对象,但没有正确的mapp。这就是为什么结果子对象只有ID。
先谢谢,请告诉我该怎么做, 仅当子项不为null时,SaveOrUpdate父项具有子集合,并且具有完整模型的子项甚至子项仅带有ID属性。
答案 0 :(得分:1)
您需要配置空目标值:
Mapper.AllowNullDestinationValues = true;
它会将null映射为null。