gpt4 book ai didi

c# - AutoMapper项目To : Not working with nested objects

转载 作者:行者123 更新时间:2023-12-01 19:19:23 24 4
gpt4 key购买 nike

我有以下 dto:

public class SingleForm
{
// other props left out for brevity

public List<Filter> Filters { get; set; }
}

然后我尝试使用 AutoMapper 映射它,如下所示:

CreateMap<Form, SingleForm>()
.ForMember(dest => dest.Filters,
opts => opts.MapFrom(src =>
Mapper.Map<List<Filter>>(src.Questions)));

CreateMap<FormQuestion, Filter>()
.ForMember(dest => dest.Header,
opts => opts.MapFrom(src => src.Question.QuestionText));

然后我使用 ProjectTo:

var query = this.context.Forms
.Where(e => e.Id == message.FormId)
.ProjectTo<SingleForm>()
.FirstOrDefault();

但是,当我执行查询时,我的过滤器集合为空。

当我尝试使用 LINQ 手动映射集合时,如下所示,它工作正常,所以我想知道我是否做错了什么?

var query = this.context.Forms
.Where(e => e.Id == message.FormId)
.Select(e => new SingleForm
{
Id = e.Id,
Filters = e.Questions.Select(q =>
new Filter {
Header = q.Question.QuestionText
}).ToList()
})
.FirstOrDefault();

最佳答案

一般来说,我认为最好避免在配置文件配置中调用 Mapper.Map() 。考虑到这一点,我认为将您的第一个映射更改为以下内容可能会有所帮助:

CreateMap<Form, SingleForm>()
.ForMember(dest => dest.Filters,
opts => opts.MapFrom(src => src.Questions));

关于c# - AutoMapper项目To : Not working with nested objects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46905879/

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