【问题标题】:Automapper DTO to entity object mapping fails with child CollectionAutomapper DTO 到实体对象的映射因子集合而失败
【发布时间】: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


    【解决方案1】:

    您需要配置空目标值:

    Mapper.AllowNullDestinationValues = true;
    

    它将空值映射为空值。

    【讨论】:

    • 感谢您的回复。但我想忽略空子集合
    • 税收是一个集合?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-21
    • 2021-11-18
    • 1970-01-01
    • 2018-09-13
    相关资源
    最近更新 更多