2012-11-30 39 views
13

Có thể ai đó vui lòng giải thích cách tôi có thể sử dụng Automapper để ánh xạ từ giá trị int DB tới chuỗi, sử dụng Enums làm bộ sưu tập.Làm cách nào để chuyển đổi int thành enum và chuỗi bằng cách sử dụng automapper và int từ DB

Tôi có sau

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 đang được sử dụng trên trang web

ánh xạ
public class MyEntityDto 
{ 
    public string Status { get; set; } 
} 

hiện Automapper

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 trong dòng đầu tiên chuyển int thành trạng thái không có vấn đề, nhưng làm cách nào để chuyển đổi int hoặc Trạng thái thành chuỗi trong DTO? Im mất bất kỳ trợ giúp sẽ được đánh giá cao.

Tôi nhận thấy có 2 chuyển đổi cần thiết ở đây, id để enum khi dữ liệu được lấy từ các cơ sở dữ liệu và enum nhu cầu Populating và sau đó là enum để chuỗi cần làm

Cheers

Trả lời

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

Ngoài ra, bạn không cần lập bản đồ từ int đến Status enum.

+1

Tuyệt vời Cảm ơn sự giúp đỡ của bạn, do đó, đơn giản cuối cùng :) – Mark

Các vấn đề liên quan