使用一个 DTO 自动映射嵌套 类

Automapping nested classes with one DTO

所以我正在与一些朋友一起构建一个网络应用程序,我将在其中为其创建后端代码。我有几个模型,但只有一个模型来自 httppost.

所以我得到了传入的 http post:

    public class LanpartyDto
{
    public Guid Id { get; set; }

    [Required]
    public string Name { get; set; }

    [Required]
    public DateTime Date { get; set; }

    [Required]
    public string Description { get; set; }

    public Dictionary<DateTime, IList<string>> UsersAvailableForDate { get; set; }

}

public class Lanparty
{
    public Guid Id { get; set; }

    [Required]
    public string Name { get; set; }

    [Required]
    public DateTime Date { get; set; }

    [Required]
    public string Description { get; set; }

    [Required]
    public Guid  AvailablityId{ get; set; }

    public IList<Availability> AvailableUsers { get; set; }
}


public class Availability
{

    public Guid Id { get; set; }

    public string DateAvailable { get; set; }

    public IList<string> Name { get; set; }

}

 public AutoMapping()
    {
        CreateMap<Lanparty, LanpartyDto>()
            .ForMember(dest => dest.UsersAvailableForDate, m => m.MapFrom(src => src.AvailableUsers.ToDictionary(k=>k.DateAvailable, v=>v.Name.ToList())));



    }

那么我可以将一个 dto 映射到多个嵌套的 classes 吗?到目前为止,我猜不是因为我得到了地图异常并在此处和 google 上查看,如果我也可以提供 availabilitydto 是可能的,但我看不到它有什么用? 那么我尝试更改前端代码以便更改我的 dto 的最佳选择是什么?或者自己创建映射代码,因为这是一个 class 不难吗?

您想要的映射如下所示:

CreateMap<Lanparty, LanpartyDto>()
    .ForMember(dest => dest.UsersAvailableForDate,
        m => m.MapFrom(src => src.AvailableUsers.ToDictionary(k => k.DateAvailable, v => v.Name)));

CreateMap<LanpartyDto, Lanparty>()
    .ForMember(dest => dest.AvailableUsers,
        m => m.MapFrom(src => src.UsersAvailableForDate.Select(u => new Availability { DateAvailable = u.Key, Name = u.Value })));

我允许自己将 Availability.DateAvailable 属性 类型更改为 DateTime,因为我不太明白您为什么要在那里使用字符串。但如果你希望它是一个字符串,只需将 ToString() 添加到 u.Key 部分即可。