簡體   English   中英

使用列表和枚舉配置AutoMapper

[英]Configuring AutoMapper with Lists and Enums

我當前正在配置AutoMapper,因為我需要將Person列表轉換為PersonViewModel列表。 我已經將ViewModel的存儲庫展平了,如下所示:

public class Person
{
    public int PersonId { get; set; }        
    public string Name { get; set; }        
    public List<CalendarEntry> Days { get; set; }
}
public class CalendarEntry
{
    public int CalendarEntryId { get; set; }
    public int PersonId { get; set; }    
    public Days Day { get; set; }    
    public DateTime From { get; set; }
    public DateTime To { get; set; }  
}
public class PersonViewModel
{
    public int PersonId { get; set; }   
    public string PersonName { get; set; }

    public bool IsMonday { get; set; }
    public bool IsTuesday { get; set; }
    public bool IsWednesday { get; set; }
    public bool IsThursday { get; set; }
    public bool IsFriday { get; set; }

    public DateTime? MondayFrom { get; set; }        
    public DateTime? MondayTo { get; set; }        
    public DateTime? TuesdayFrom { get; set; }        
    public DateTime? TuesdayTo { get; set; }        
    public DateTime? WednesdayFrom { get; set; }        
    public DateTime? WednesdayTo { get; set; }        
    public DateTime? ThursdayFrom { get; set; }        
    public DateTime? ThursdayTo { get; set; }        
    public DateTime? FridayFrom { get; set; }        
    public DateTime? FridayTo { get; set; }     
}

我創建了一個AutoMapperConfig文件,在其中為每個成員創建了一個地圖,如下所示:

AutoMapper.Mapper.CreateMap<Person, PersonViewModel>()
            .ForMember(dest => dest.PersonId, opts => opts.MapFrom(src => src.PersonId))
            .ForMember(dest => dest.PersonName, opts => opts.MapFrom(src => src.Name))

現在,我到達了CalendarEntryId,顯然它包含在List<CalendarEntry> MeetingDays道具中,當用戶從他們選擇的前端創建記錄時,如何處理此屬性以及Mon-Fri的5個布爾值復選框並輸入時間字段,則數據庫中其余的DateTime (日/月/年)被設置為01/01/1900 Days是一個存儲有Mon-Sun的Enum ,因此我可以通過某種方式進行交叉引用來檢查IsMonday是否為true或false,但是我對如何配置AutoMapper這一部分感到IsMonday困惑?

您如何期望將ID列表映射到一個int屬性CalendarEntryId

如果我是你,我將更改我的視圖模型以包含CalendarEntryViewModel的集合。

創建一個映射CreateMap<CalendarEntry, CalendarEntryViewModel> ,然后Automapper會將您的List<CalendarEntry>映射到您的視圖模型上的List<CalendarEntryViewModel>

另外,由於您的數據模型和視圖模型具有與PersonId相同的屬性名稱,因此無需顯式映射該名稱。 Automapper將為您完成此任務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM