Проблема с AutoMapper в ASP.NET

183
19 апреля 2018, 09:33

Делаю маппинг в контроллере для выдачи всех книг

public ActionResult Book()
    {
        var books =
            Mapper.Map<List<Book>, BookViewModel>(bookService.GetBooks());
        return View(books);
    }

И мне выдает такую ошибку

[AutoMapperConfigurationException: 
Unmapped members were found. Review the types and members below.
Add a custom mapping expression, ignore, add a custom resolver, or modify the source/destination type
  For no matching constructor, add a no-arg ctor, add optional arguments, or map all of the constructor parameters
List`1 -> BookViewModel (Destination member list)
System.Collections.Generic.List`1[[Library.Entitys.Model.Book,            
Library.Entitys, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]] -> Library.ViewModel.BookViewModels.BookViewModel (Destination member list)
Unmapped properties:
BookId
Name
Author
YearOfPublishing
]

Вот Model

public class Book
{
    public int BookId { get; set; }
    public string Name { get; set; }
    public string Author { get; set; }
    public int YearOfPublishing { get; set; }
    public virtual ICollection<PublicationHouse> PublicationHouse { get; set; }
    public Book()
    {
        PublicationHouse = new List<PublicationHouse>();
    }
}

Вот ViewModel

 public class BookViewModel
 {
    public int BookId { get; set; }
    public string Name { get; set; }
    public string Author { get; set; }
    public int YearOfPublishing { get; set; }
 }

Здесь я инициализирую

public class AutoMapperConfig
{
    public static void Initialize()
    {
        Mapper.Initialize(cfg =>
        {
            cfg.CreateMap<PublicationHouse, GetPublicationHouseViewModel>();
            cfg.CreateMap<PublicationHouse, AddPublicationHouseViewModel>();
            cfg.CreateMap<PublicationHouse, EditPublicationHouseViewModel>();
            cfg.CreateMap<Book, BookViewModel>();
            cfg.CreateMap<Book, DetailsBookViewModel>();
            cfg.CreateMap<Book, EditBookViewModel>();
            cfg.CreateMap<Book, AddBookViewModel>();
            cfg.CreateMap<Magazine,GetMagazineViewModel >();
            cfg.CreateMap<Magazine, AddMagazineViewModel>();
            cfg.CreateMap<Magazine, EditMagazineViewModel>();
            cfg.CreateMap<Brochure, GetBrochureViewModel>();
            cfg.CreateMap<Brochure, AddBrochureViewModel>();
            cfg.CreateMap<Brochure, EditBrochureViewModel>();
            cfg.CreateMap<AllPublications, GetAllPublicationViewModel>();
        });
    }
}

Кто знает что я делаю не так ?

Answer 1

Я пытался передать список модели в одну ViewModel ,а надо было передавать в список ViewModel

public ActionResult Book()
    {
        var books =
            Mapper.Map<List<Book>, List<BookViewModel>>(bookService.GetBooks());
        return View(books);
    }

моя невнимательность

READ ALSO
Изменение текста кнопки через команды MVVM WPF C#

Изменение текста кнопки через команды MVVM WPF C#

Необходимо изменить состояние кнопки ("Старт/Стоп") и запустить одновременно этой кнопкой сервис(в моем случае скриншот с вебкамеры)Пытаюсь...

199
Открытие новой вкладки браузера Selenium WebDeiver C#

Открытие новой вкладки браузера Selenium WebDeiver C#

Требуется открыть в браузере две страницыК примеру, программа открывает YouTube

168
С# как прочитать и записать большой exe файл

С# как прочитать и записать большой exe файл

Все мучаюсь над чтением и записью больших exe файлов, нужно чтоб программа читала большой exe файл и меняла в нем некоторые символы после чего...

166
Отображение изображения в picture box

Отображение изображения в picture box

Есть программа на winformsС помощью codefirst создана таблица

153