класс Autopper и вложенный класс отображаются в один класс - PullRequest
5 голосов
/ 13 мая 2011

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

The mapping process

я записал это на карту, но оно выдает исключение

Mapper.CreateMap<GenericStory, GenericStoryDisplayViewModel>().ForMember(
            gs => gs.StoryBody,dest => dest.MapFrom( gs => gs));

Попытка сопоставить StoryWriting.Web.Models.GenericStory с StoryWriting.Web.ViewModels.StoryBodyViewModel. Использование конфигурации сопоставления для StoryWriting.Web.Models.GenericStory и StoryWriting.Web.ViewModels.GenericStoryDisplayViewModel Свойство назначения: StoryBody Отсутствует конфигурация карты типов или неподдерживаемое отображение. Возникло исключение типа 'AutoMapper.AutoMapperMappingException'.

Ответы [ 2 ]

7 голосов
/ 13 мая 2011

Я думал, что с AutoMapper вам также нужно отобразить подтипы, независимо от того, содержатся ли они в другом отображаемом типе?

Так что в этом случае вы добавите

Mapper.CreateMap<GenericStory, StoryBodyViewlModel>();

и затем ваше текущее отображение.

РЕДАКТИРОВАТЬ:

Я обновил свой тестовый пример, чтобы он даже соответствовал вашим изображениям, и он функционирует, как ожидалось:

public class GenericStory
{
    public string Description { get; set; }
    public int Id { get; set; }
    public bool IsFavoritedByCurrentUser { get; set; }
    public int StoryTypeId { get; set; }
    public string StoryTypeName { get; set; }
    public string Html { get; set; }
    public string Title { get; set; }
    public int TotalFavoritedByUsers { get; set; }
}

public class GenericStoryDisplayViewModel
{
    public string Description { get; set; }
    public int Id { get; set; }
    public int StoryTypeId { get; set; }
    public string StoryTypeName { get; set; }

    public StoryBodyViewModel StoryBody { get; set; }
}

public class StoryBodyViewModel
{
    public string Title { get; set; }
    public string Html { get; set; }

    public int TotalFavoritedByUsers { get; set; }
    public bool IsFavoritedByCurrentUser { get; set; }
}

, а затеммой тест

private static void Main()
{
    var story = new GenericStory
    {
        Description = "Lorem ipsum dolor sit amet,....etc",
        Html = "<h1>ZOMG!</hl>\r\n\r\n<h2>BEES!</h2>",
        Id = 9,
        IsFavoritedByCurrentUser = true,
        StoryTypeId = 1,
        StoryTypeName = "ShortStory",
        Title = "Test Story",
        TotalFavoritedByUsers = 1
    };

    var vm = new GenericStoryDisplayViewModel();

    Mapper.CreateMap<GenericStory, StoryBodyViewModel>();
    Mapper.CreateMap<GenericStory, GenericStoryDisplayViewModel>()
       .ForMember(dest => dest.StoryBody, opt => opt.MapFrom(src => src));

    Mapper.Map(story, vm);

    Console.ReadKey();
}

Результаты:

Results

1 голос
/ 05 июля 2018

Вы можете использовать обратное отображение для настройки развертывания.Посмотрите на официальный документ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...