【发布时间】:2021-04-29 01:14:40
【问题描述】:
我有以下映射:
CreateMap<PeopleForm, FormDto>()
.ForMember(des => des.Code, src => src.MapFrom(s => s.Code))
.ForMember(des => des.Notes, src => src.MapFrom(s => s.FormNotes))
//other mappings removed for breivity
;
CreateMap<FormNote, NoteDto>()
.ForMember(x => x.Note, cfg => cfg.MapFrom(y => y.Note));
我想查询它:
var query = _context.PeopleForms.Where(i => i.Id == id);
var form = await _mapper.ProjectTo<FormDto>(query).FirstOrDefaultAsync();-->NullReferenceException
但是当我注释掉从 FormNotes 到 Notes 的映射时它可以工作:
CreateMap<PeopleForm, FormDto>()
.ForMember(des => des.Code, src => src.MapFrom(s => s.Code))
//.ForMember(des => des.Notes, src => src.MapFrom(s => s.FormNotes))--> this line is the problem
;
而且,我想出的解决方案是在映射中进行选择:
.ForMember(des => des.Notes, src => src.MapFrom(s => s.FormNotes.Select(n=> new
NoteDto{Note = n.Note})))
我检查了日志,似乎问题主要与 Ef 核心有关:
Microsoft.EntityFrameworkCore.Query: Error: An exception occurred while iterating over
the results of a query for context type 'Backend.Infrastructure.MolsaContext'.
我该怎么办?我有另一个表(实体)的精确映射,它没有问题,唯一的问题是这个特定的映射。
我错过了什么?是和AutoMapper还是Ef core有关?
【问题讨论】:
标签: entity-framework-core automapper ef-core-3.1 automapper-10