2012-06-25 5 views
3

Я только начал использовать ValueInjecter для своих сопоставлений сущностей (DTO < -> Entity). Heres мой DTO:C# ValueInjecter: сопоставление всего объекта Graph

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

Heres мои классы 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 из Repository. Запрос на репозиторий Incident & AgencyIncidentType таблицы из базы данных и карты Incident ->IncidentDTO с использованием ValueInjecter и возврата IncidentDTO.

Каков наилучший способ сделать указанное выше отображение с помощью ValueInjecter ??

Спасибо, Prateek

+1

посмотрите на http://prodinner.codeplex.com, он использует valueinjecter за то же самое, что вы делаете, у него также есть pdf, объясняющий, что – Omu

+0

Спасибо Чак! это именно то, что я искал, 'ConventionInjection' для' IEnumerable' типов .... Кроме того, ответ Глоппи указал мне на Deep Cloning + 'ConventionInjection для IEnumerable', поэтому я отмечаю его как ответ. Спасибо, ребята, за помощь !! и Chuck для создания объектно-ориентированного отображения объектов намного проще.;) –

ответ

4

Если вы хотите отобразить Incident к IncidentDTO, сохраняя при этом и отображение Agency объекта в свойстве agencyAgencyDTO) из Incident Например, я бы предложил переименовать agencyDTO свойство agency в вашем IncidentDTO, а затем используйте настройку для образца CloneInjection из документации Value Injector, как описано здесь: omu.valueinjecter deep clone unlike types

+0

Спасибо Gloppy !! все, что я хотел в одном месте ..;) –