【发布时间】:2015-03-30 12:31:38
【问题描述】:
我为子集合设置了延迟加载。
我想用子对象发布我的对象,但是在映射时,它将空子对象转换为空子对象。对于我使用的,
例如
.ForMember(d => d.Taxes,
opt => opt.Condition(d => d.Taxes != null));
它工作得不好。 然后使用 ConstructUsing 方法在 dto 子对象为 null 时将子对象设置为 null,当 dto 子对象仅具有 ID 属性时,还可以通过 id 获取完整模型。
用于构造子对象
例如
.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 但不适用于仅带有 ID 的 dto 子对象。上述方法返回完整对象但未正确映射。这就是为什么生成的子对象只有 ID。
提前谢谢请建议我做什么, 仅当子集合不为 null 并且使用完整模型传递子集合时,才使用子集合保存或更新父集合,即使子集合仅具有 ID 属性。
【问题讨论】:
标签: nhibernate fluent-nhibernate automapper