c# ValueInjecter: сопоставление всего объекта Graph

Я только начал использовать ValueInjecter для сопоставления сущностей (DTO ‹-> Entity). Вот мой 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 Proxy:

 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 -> IncidentDTO с помощью ValueInjecter и возвращает IncidentDTO.

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

Спасибо, Пратик


person Prateek Singh    schedule 25.06.2012    source источник
comment
посмотрите на prodinner.codeplex.com, он использует valueinjecter для того же, что и вы, он также имеет PDF, объясняющий, что   -  person Omu    schedule 26.06.2012
comment
Спасибо, Чак!! это именно то, что я искал, ConventionInjection для IEnumerable типов.... Также ответ @Gloppy указал мне на Глубокое клонирование + ConventionInjection for IEnumerable, поэтому я отмечаю его как ответ.. Спасибо, ребята, за помощь!! и Чаку за то, что сделал сопоставление объектов намного проще..;)   -  person Prateek Singh    schedule 26.06.2012


Ответы (1)


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

person Gloopy    schedule 25.06.2012
comment
Спасибо, Глоппи!! все, что я хотел в одном месте..;) - person Prateek Singh; 26.06.2012