.NET核心Linq NullReferenceException使用自动映射器

.NET核心Linq NullReferenceException使用自动映射器,.net,.net-core,.net,.net Core,使用automapper,当我尝试获取TeamId时,出现了NullException错误 一旦我注释掉TeamName,我就可以从TeamMembers获取数据,但不知何故,当我试图获取TeamId时,返回错误 CreateMap<Match, MatchResource>() .ForMember(mr => mr.HomeTeamName, opt => opt.MapFrom(m => m.HomeTeam.Name))

使用automapper,当我尝试获取TeamId时,出现了NullException错误

一旦我注释掉TeamName,我就可以从TeamMembers获取数据,但不知何故,当我试图获取TeamId时,返回错误

    CreateMap<Match, MatchResource>()
        .ForMember(mr => mr.HomeTeamName, opt => opt.MapFrom(m => m.HomeTeam.Name))
        .ForMember(mr => mr.AwayTeamName, opt => opt.MapFrom(m => m.AwayTeam.Name))
        .ForMember(mr => mr.MatchRecords, opt => opt.MapFrom(m => m.MatchRecords.Select(mrs => new MatchRecordResource 
        { 
            Id = mrs.Id,
            MemberId = mrs.Member.Id, 
            MemberName = mrs.Member.Name,
            TeamMembers = mrs.Member.TeamMembers.FirstOrDefault(f => f.MemberId == mrs.Id),
            //TeamId = mrs.Member.TeamMembers.FirstOrDefault(f => f.MemberId == mrs.Id).TeamId,
            //TeamName = mrs.Member.TeamMembers.FirstOrDefault(f => f.MemberId == mrs.Id).Team.Name,
            CodeId = mrs.CodeId, 
            CodeName = mrs.Type.Name
        })));
我的会员模式:

公共类成员:BaseEntity {

公共虚拟列表团队成员{get;set;}
公职人员()
{
团队成员=新列表();
}
}

我不明白,我可以获取团队成员的数据,但无法获取其中的信息是很奇怪的。我还检查了automapper函数之前的数据,它在TeamMember中包含Teamdata

任何人都请帮忙

另外,

    CreateMap<Member, MemberResource>()
        .ForMember(mr => mr.Id, opt => opt.MapFrom(m => m.Id))
        .ForMember(mr => mr.TeamName, opt => opt.MapFrom(m => m.TeamMembers.FirstOrDefault(f => f.MemberId == m.Id).Team.Name))
        .ForMember(mr => mr.TeamId, opt => opt.MapFrom(m => m.TeamMembers.FirstOrDefault(f => f.MemberId == m.Id).Team.Id));
CreateMap()
.ForMember(mr=>mr.Id,opt=>opt.MapFrom(m=>m.Id))
.ForMember(mr=>mr.TeamName,opt=>opt.MapFrom(m=>m.TeamMembers.FirstOrDefault(f=>f.MemberId==m.Id.Team.Name))
.ForMember(mr=>mr.TeamId,opt=>opt.MapFrom(m=>m.TeamMembers.FirstOrDefault(f=>f.MemberId==m.Id.Team.Id));

我可以从member mapper中获取TeamName和TeamId。

奇怪的是,TeamName=mrs.member.TeamMembers.Where(f=>f.MemberId==mrs.Id)。选择(s=>s.Team.Name.FirstOrDefault(),这就成功了。有人知道为什么吗?我不认为立即从firstordefault获取数据有什么区别。这看起来像是EF的核心问题。检查。将其作为LINQ语句运行,不使用AM。你应该得到同样的结果。
public virtual List<TeamMember> TeamMembers { get; set; }

public Member()
{
    TeamMembers = new List<TeamMember>();
}
    CreateMap<Member, MemberResource>()
        .ForMember(mr => mr.Id, opt => opt.MapFrom(m => m.Id))
        .ForMember(mr => mr.TeamName, opt => opt.MapFrom(m => m.TeamMembers.FirstOrDefault(f => f.MemberId == m.Id).Team.Name))
        .ForMember(mr => mr.TeamId, opt => opt.MapFrom(m => m.TeamMembers.FirstOrDefault(f => f.MemberId == m.Id).Team.Id));