2012-11-30 6 views
13

Könnte jemand bitte erklären, wie ich Automapper verwenden kann, um von DB Int-Wert zu einer Zeichenfolge, mit Enums als die Sammlung.Wie konvertiere ich ein Int in ein Enum und eine Zeichenfolge mit Autoadapter und Int aus DB

Ich habe folgendes

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 auf der Webseite verwendet wird

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

Aktuelle AutoMapper Zuordnungen

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)) 

Die EnumConverter in erster Linie wandelt ohne Problem die int in einen Zustand in Ordnung, aber wie konvertiere ich den int oder Status der Zeichenfolge in der DTO? Im verlorenen jede Hilfe würde geschätzt werden.

Ich weiß, es gibt zwei Conversions hier erforderlich, die ID zu dem Enum, wenn die Daten aus der Datenbank und Enum Bedürfnisse gezogen wird bevölkern und dann die Enum in String getan werden muss

Prost

Antwort

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

Auch brauchen Sie keine Zuordnung von int zu Status enum.

+1

Awesome Dank für Ihre Hilfe, so einfach am Ende :) – Mark

Verwandte Themen