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

automapper c# entity-framework

Question

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

1
19
11/30/2012 8:04:54 AM

Accepted Answer

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.

40
5/7/2015 4:15:02 PM


Related Questions





Related

Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow