2015-11-22 4 views
2

Почему automapper создает пустые экземпляры коллекций, если они являются нулевым значением? Вот моя конфигурацияКоллекция пулов Automapper пуста

public class MapperProfile : Profile 
{ 
    protected override void Configure() 
    { 
     AllowNullCollections = true; 
     AllowNullDestinationValues = true; 
     Mapper.CreateMap<User, DAL.Models.User>(); 
     Mapper.CreateMap<DAL.Models.User, User>(); 
     Mapper.CreateMap<Role, DAL.Models.Role>(); 
     Mapper.CreateMap<DAL.Models.Role, Role>(); 
     Mapper.CreateMap<Task, DAL.Models.Task>(); 
     Mapper.CreateMap<DAL.Models.Task, Task>(); 
     Mapper.CreateMap<TaskReport, DAL.Models.TaskReport>(); 
     Mapper.CreateMap<DAL.Models.TaskReport, TaskReport>(); 
     Mapper.CreateMap<Project, DAL.Models.Project>(); 
     Mapper.CreateMap<DAL.Models.Project, Project>(); 
    } 
} 

Мои модели имеют те же свойства:

public class User 
{ 
    public virtual List<Task> Tasks { get; set; } 

    public virtual List<Role> Roles { get; set; } 

    public virtual List<TaskReport> TaskReports { get; set; } 
} 

В моем проекте MVC в Global.asax Я просто добавить свой профиль, как это:

  Mapper.AddProfile(new BL.MapperProfile()); 

Спасибо!

+1

Как вы создаете сопоставление в коде? – christiandev

+0

Я изменил свой вопрос. Надеюсь, это немного разъяснит это. –

+0

Я смог заново создать проблему после ваших изменений и обновил свой ответ. –

ответ

3

Извините, мой первый ответ был не в курсе. Я смог воссоздать проблему и узнать, что происходит.

Вы получаете эту ошибку из-за статического вызова метода Mapper.CreateMap. Если вы измените свой код, чтобы просто вызвать нестационарный метод CreateMap, вам должно быть хорошо.

public class MapperProfile : Profile 
{ 
    protected override void Configure() 
    { 
     AllowNullCollections = true; 
     AllowNullDestinationValues = true; 

     // calling non-static CreateMap 
     CreateMap<User, DAL.Models.User>(); 
     CreateMap<DAL.Models.User, User>(); 
     CreateMap<Role, DAL.Models.Role>(); 
     CreateMap<DAL.Models.Role, Role>(); 
     CreateMap<Task, DAL.Models.Task>(); 
     CreateMap<DAL.Models.Task, Task>(); 
     CreateMap<TaskReport, DAL.Models.TaskReport>(); 
     CreateMap<DAL.Models.TaskReport, TaskReport>(); 
     CreateMap<Project, DAL.Models.Project>(); 
     CreateMap<DAL.Models.Project, Project>(); 
    } 
} 
+0

Спасибо, он решил мою проблему! –