web-dev-qa-db-ja.com

DBのautomapperとintを使用してintを列挙型と文字列に変換するにはどうすればよいですか?

Automapperを使用して、列挙型をコレクションとして使用してDBint値から文字列にマップする方法を誰かに説明してもらえますか。

私は以下を持っています

列挙型

public enum Status { Open, Closed }

EF4.1ドメインモデル

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

Webサイトで使用されている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つの変換が必要であることに気付きました。データがデータベースからプルされ、列挙型にデータを入力する必要がある場合のIDから列挙型への変換と、列挙型から文字列への変換が必要です。

乾杯

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

また、intからStatus列挙型へのマッピングも必要ありません。

38