Как преобразовать 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 конверсии, идентификатор для перечисления, когда данные извлекаются из базы данных, и перечисление нуждается в заполнении, а затем перечисление в строку требуется
Приветствия
Ответы
Ответ 1
Mapper.CreateMap<MyEntity, MyEntityDto>()
.ForMember(destination => destination.Status,
opt => opt.MapFrom(source => Enum.GetName(typeof(Status), source.StatusId)));
Также вам не нужно отображать от int
до Status
enum.