2012-06-25 60 views
3

我刚开始对我的Entity Mappings使用ValueInjecter(DTO < - > Entity)。 继承人我DTO:c#ValueInjecter:映射整个对象图

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; } 
} 

现在,我需要从信息库查询IncidentDTO。 存储库查询Incident & AgencyIncidentType来自数据库和地图的表格Incident→使用ValueInjecter并返回IncidentDTO

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

感谢, Prateek

+1

看看http://prodinner.codeplex.com,它使用valueinjecter对于你正在做的完全相同的事情,它也有一个pdf解释, – Omu

+0

谢谢查克!多数民众赞成我正在寻找,'ConventionInjection'为'IEnumerable'类型....也@谷歌的答案指出我深层克隆+'ConventionInjection为IEnumerable'所以我把它标记为答案..谢谢你们的帮助!和Chuck使对象映射变得容易得多..;) –

回答

4

如果要映射IncidentIncidentDTO而一个Incident比如我会建议agencyDTO属性重命名为agency的保留,并在agency财产(一AgencyDTO)映射Agency对象在您的IncidentDTO中,然后使用Value Injector文档中的CloneInjection样本进行调整,如下所述:omu.valueinjecter deep clone unlike types

+0

谢谢Gloppy!我想要的东西在一个地方..;) –