2012-06-25 94 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!我想要的東西在一個地方..;) –