使用子Collection时,Automapper DTO到实体对象映射失败

时间:2015-03-30 12:31:39

标签: nhibernate fluent-nhibernate automapper

我为子集合设置了延迟加载 我想用子对象发布我的对象,但是在映射时,它将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属性。

1 个答案:

答案 0 :(得分:1)

您需要配置空目标值:

Mapper.AllowNullDestinationValues = true;

它会将null映射为null。