【问题标题】:c# ValueInjecter : Mapping the whole object Graphc# ValueInjecter : 映射整个对象图
【发布时间】:2012-06-26 10:17:27
【问题描述】:

我刚刚开始为我的实体映射(DTO 实体)使用 ValueInjecter。 这是我的 DTO:

public class IncidentDTO
{
    int ID { get; set; }
    string Name { get; set; }
    AgencyDTO agencyDTO { get; set; }
}

public class AgencyDTO
{
    int ID { get; set; }
    string Name { get; set; }
    List<IncidentTypeDTO> incidentTypeDTOList { get; set; }
}

public class IncidentTypeDTO
{
    int ID { get; set; }
    string TypeName { get; set; }
}

这是我的 NHibernate 代理类:

 public class Incident
{
    int ID { get; set; }
    string Name { get; set; }
    Agency agency { get; set; }
}

public class Agency
{
    int ID { get; set; }
    string Name { get; set; }
}

public class IncidentType
{
    int ID { get; set; }
    string TypeName { get; set; }
}

public class AgencyIncidentType
{
    int ID { get; set; }
    Agency agency { get; set; }
    IncidentType incidentType { get; set; }
}

现在,我需要从 Repository 查询 IncidentDTO。 使用 ValueInjecter 从数据库中查询 IncidentAgencyIncidentType 表并映射 Incident -> IncidentDTO 并返回 IncidentDTO

使用 ValueInjecter 进行上述映射的最佳方法是什么?

谢谢, 普拉提克

【问题讨论】:

  • 看看prodinner.codeplex.com,它使用 valueinjecter 来完成与你正在做的完全相同的事情,它还有一个 pdf 解释
  • 谢谢查克!!这正是我正在寻找的,ConventionInjection 用于IEnumerable 类型....另外@Gloppy 的回答指出我深度克隆+ConventionInjection for IEnumerable 所以我将其标记为答案.. 谢谢大家的帮助!和 Chuck 让对象-对象映射变得如此简单..;)

标签: c# dto valueinjecter object-object-mapping


【解决方案1】:

如果您想将Incident 映射到IncidentDTO,同时在Incident 实例的agency 属性(到AgencyDTO)中保留和映射Agency 对象,我建议重命名@ 987654328@ 属性到您的 IncidentDTO 中的 agency,然后使用此处所述的 Value Injector 文档中的 CloneInjection 示例进行调整:omu.valueinjecter deep clone unlike types

【讨论】:

  • 感谢 Gloppy!我想要的一切都在一个地方..;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多