我正在使用 NHibernate,它是使用 Respositories 和服务抽象出来的。我们不允许延迟加载属性,因此必须在查询中选择它们。
我的问题是我正在尝试从 Answers 表中获取最新的响应号,但在许多情况下该对象可能不存在,因此我遇到了 Null Reference 异常或“代码应该无法访问”异常。
这是我对评论的适当部分所做的事情。.
var leaders =
_storeService.GetAll()
.Where( p => p.Id.Equals(storeId) && p.Employees.Any() )
.SelectMany(p => p.Employees)
.Select(emp => new
{
LeaderId = emp.Id,
LeaderFirstName = emp.FirstName,
LeaderLastName = emp.LastName,
Followers = emp.Followers
.Select(followers => new
{
followers.FollowerEmployee.Id,
followers.FollowerEmployee.FirstName,
followers.FollowerEmployee.LastName,
DepartmentName = followers.FollowerEmployee.Department.Name,
//Problem Area
AssessmentResponse = followers.FollowerEmployee
.Answers
.First( a => a.Answer.Question.IsPrimary )
.Answer
.Number
//Null Reference Exception
} )
} ).ToList();
我可能已经尝试了 15 次迭代,并不总是使用 .First 但有时使用 .Single
我无权访问存储库模式或任何 NHibernate 查询。有没有办法用 LINQ 避免这个空引用异常?我不能延迟加载,所以这有点问题。