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;