gpt4 book ai didi

c# - 如何使用自动映射器跳过对象

转载 作者:太空宇宙 更新时间:2023-11-03 21:31:04 24 4
gpt4 key购买 nike

我有以下数据模型:

class TicketDM
{
public int Id{get;set;}
public List<NoteContractDM> Notes{get;set;}
}

class NoteContractDM
{
public NoteDM Note{get;set;}
}

class NoteDM{
public string Subject{get;set;}
public string Description{get;set}
}

以及以下 ViewModel:

public class TicketVM
{
public int Id {get;set;
public List<NoteVM> Notes{get;set;}
}

public NoteVM
{
public string Subject{get;set;}
public string Description{get;set;}
}

我想做一些自动映射,为此我必须跳过 noteContractDM。以下显然不起作用:

Mapper.CreateMap<TicketDM, TicketVM>()

我试过这样的:

Mapper.CreateMap<TicketDM, TicketVM>()
.ForMember(vm => vm.Notes, conf => conf.MapFrom(dm => dm.Notes));

但它总是给我 Missing type map configuration or unsupported mapping.异常。

最佳答案

如果您想跳过对象,您可以告诉 Automapper 忽略它们:

Mapper.CreateMap<TicketDM, TicketVM>()
.ForMember(vm => vm.Notes, conf => conf.Ignore());

但根据您给出的示例,您可能想要创建另一个 map ,以便 Notes 也可以自动映射:

Mapper.CreateMap<TicketDM, TicketVM>()
.ForMember(vm => vm.Notes, conf => conf.MapFrom(dm => dm.Notes.Select(x => x.Note)));

Mapper.CreateMap<NoteDM, NoteVM>();

(示例使用 System.Linq)

关于c# - 如何使用自动映射器跳过对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24204159/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com