Подтвердить что ты не робот

Как преобразовать int в перечисление и строку с использованием automapper и int из DB

Может ли кто-нибудь объяснить, как я могу использовать Automapper для сопоставления из значения DB int в строку, используя Enums в качестве коллекции.

У меня есть следующее

Enum

public enum Status { Open, Closed }

EF 4.1 Модель домена

public class MyEntity
{
    ...
    public int StatusId { get; set; }
    public virtual Status Status { get; set; }    
}

Dto используется на веб-сайте

public class MyEntityDto
{
    public string Status { get; set; }
}

Текущие сопоставления автоматов

Mapper.CreateMap<int, Status>().ConvertUsing<EnumConverter<Status>>();
Mapper.CreateMap<Enum, string>().ConvertUsing(src => src.ToString());

Mapper.CreateMap<MyEntity, MyEntityDto>()
                .ForMember(d => d.Status, o => o.MapFrom(y => y.StatusId))

EnumConverter в первой строке преобразует int в состояние без проблем, но как мне преобразовать int или Status в строку в DTO? Я потерял любую помощь, будет оценена.

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

Приветствия

4b9b3361

Ответ 1

Mapper.CreateMap<MyEntity, MyEntityDto>()
      .ForMember(destination => destination.Status, 
                 opt => opt.MapFrom(source => Enum.GetName(typeof(Status), source.StatusId)));

Также вам не нужно отображать от int до Status enum.