How do i convert a int to an enum and a string using automapper and int from DB

automapper, c#, entity-framework

Solution

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

Also you don't need mapping from `int` to `Status` enum.

Problem

Could someone please explain how I can use Automapper to map from DB int value to a string, using Enums as the collection. I have the following Enum ``` public enum Status { Open, Closed } ``` EF 4.1 Domain Model ``` public class MyEntity { ... public int StatusId { get; set; } public virtual Status Status { get; set; } } ``` Dto being used on website ``` public class MyEntityDto { public string Status { get; set; } } ``` Current Automapper mappings ``` 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)) ``` The EnumConverter in first line converts the int to a status fine without problem, but how do i convert the int or Status to the string in the DTO? Im lost any help would be appreciated. I realise there are 2 conversions required here, the id to the enum when the data is pulled from the database and enum needs populating and then the enum to string needs doing Cheers

Original source

Related problems