Nhibernate 自动映射DTO到实体对象的映射因子集合而失败

Nhibernate 自动映射DTO到实体对象的映射因子集合而失败,nhibernate,fluent-nhibernate,automapper,Nhibernate,Fluent Nhibernate,Automapper,我已为子集合设置了延迟加载。 我想用子对象发布我的对象,但在映射时,它将空的子对象转换为空的子对象 e、 g 它不好用。 然后使用ConstructUsing方法,当dto子对象为null时,将子对象设置为null;当dto子对象仅具有id属性时,还可以通过id获取完整的模型 用于构造子对象 e、 g .ConstructUsing((Func)(rc=> AutoMapperNHibernateFactory.Create(rc))) 施工方法: public class AutoMappe

我已为子集合设置了延迟加载。
我想用子对象发布我的对象,但在映射时,它将空的子对象转换为空的子对象

e、 g

它不好用。 然后使用ConstructUsing方法,当dto子对象为null时,将子对象设置为null;当dto子对象仅具有id属性时,还可以通过id获取完整的模型

用于构造子对象

e、 g

.ConstructUsing((Func)(rc=>
AutoMapperNHibernateFactory.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();
    }
}
公共类AutoMapperNHibernateFactory
其中dto:Dinerware.WebService.Public.dto.Model
其中dao:Dyno.dao.Model,new()
{
公共静态dao创建(ResolutionContext rc)
{
Int64?Id=((dto)rc.SourceValue).Id;
if(Id.HasValue&&Id.Value>0)
返回DinerwareDaoController.GetModelById(((dto)rc.SourceValue.Id.Value);
返回新的dao();
}
}
它适用于dto子对象null,但不适用于dto子对象,该子对象仅带有ID。上述方法返回完整对象,但不正确返回mapp。这就是为什么生成的子对象仅具有ID

提前谢谢,请建议我该怎么做,
SaveOrUpdate parent with child集合仅当child不为null时,并传递具有完整模型的child,即使child仅具有ID属性

您需要配置空目标值:

Mapper.AllowNullDestinationValues = true;

它会将空值映射为空。

谢谢您的回复。但是我想忽略null子集合taxes是一个集合吗?
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();
    }
}
Mapper.AllowNullDestinationValues = true;