2012-06-17 2 views
1

Я использую Automapper для отображения моей модели домена и DTO. Когда я нахожу карту Mapper.Map<SiteDTO, SiteEntity>это прекрасно работает.Automapping Collections

Но когда я использую коллекции тех же объектов, он не отображается.

Mapper.Map<Collection<SiteEntity>, Collection<SiteDTO>>(siteEntityCollection); 

AS за Automapper Wiki, он говорит, что списки, реализующие ICollection будут отображаться, я использую коллекцию, которая реализует ICollection, но automapper не отображает его. Я делаю что-то неправильно.

public class SiteEntity //SiteDTO has exactly the same properties, so I am not posting it here. 
    { 
     public int SiteID { get; set; } 
     public string Code { get; set; } 
     public string Name { get; set; } 
     public byte Status { get; set; } 
     public int ModifiedBy { get; set; } 
     public DateTime ModifiedDate{ get; set; } 
     public long TimeStamp{ get; set; } 
     public string Description{ get; set; } 
     public string Notes{ get; set; } 
     public ObservableCollection<AreaEntity> Areas{ get; set; } 
     public void SiteEntity() 
     { 
      Areas=new ObservableCollection<AreaEntity>(); 
     } 
    } 

EDIT: SiteEntity обновлен, чтобы включить конструктор.

+1

У вас есть сопоставления для внутренних коллекций, установленных в вашем картографе? у вас есть сопоставление для AreaEntity с параметром AreEntityDto? –

+0

@EIYusubov Спасибо за ответ, но я не могу решить проблему. Я бы опубликовал объекты и код, который я использую для отображения позже. Возможно, если это возможно, вы можете взглянуть и сказать, что происходит не так. –

ответ

1

Я использую IList<> без проблем. Сначала я проверил бы отображение моделей дочерних доменов. Скорее всего, они еще не установлены. В вашем примере: отображение AreaEntity -> AreaEntityDto.

Mapper.Map<AreaEntity, AreaEntityDto> 

Пример кода из вики:

Mapper.CreateMap<ParentSource, ParentDestination>() 
    .Include<ChildSource, ChildDestination>(); 
Mapper.CreateMap<ChildSource, ChildDestination>(); 
0

на основе кода, публикуемую Automapper преминут карту, потому что вы не имеете конструктор по умолчанию для SiteEntity, который создает новые ObservableCollection районы.

Поскольку этого не существует, вы получите исключение с ссылкой на null, когда оно попытается отобразить области.

+0

В исходном коде у меня есть конструктор для создания объектов ObservableCollection Areas. Я просто не размещал его здесь, чтобы сделать вопрос кратким. См. Обновленный SiteEntity. –

Смежные вопросы