首页 > 解决方案 > 在实体框架中选择可选导航属性的属性的正确方法是什么?

问题描述

选择可选导航属性实体框架的属性的正确方法是什么?

我担心如果导航属性为空,那么当我尝试访问其(可选导航属性)属性时会引发错误。

这是我尝试过的:

return await this.relatedCasesRepository
                    .GetAll()
                    .AsNoTracking()
                    .Where(rc => rc.FirstCaseId == caseId || rc.SecondCaseId == caseId)
                    .Select(rc => new RelatedCaseInfoDto
                    {
                        FirstCaseId = rc.FirstCaseId,
                        FirstCaseName = rc.FirstCase.Name,
                        SecondCaseId = rc.SecondCaseId,
                        SecondCaseName = rc.SecondCase.Name,
                        CaseRelationTypeId = rc.CaseRelationTypeId,
                        CaseRelationTypeName = rc.CasesRelationType?.Name,
                        Id = rc.Id
                    })
                    .ToArrayAsync();

代码:rc.CasesRelationType?.Name产生错误:

表达式树 lambda 可能不包含空传播运算符。

这是否意味着我应该执行第二个请求以获取可选导航属性的所有属性?或者有没有办法查询可选导航属性的属性,以防可选导航属性不为空,否则返回空?

标签: entity-frameworkselectnullnavigational-properties

解决方案


为什么不使用条件运算符?

CaseRelationTypeName = (rc.CasesRelationType != null) ? rc.CasesRealtionType.Name : null;

推荐阅读