リポジトリとサービスを使用して抽象化された NHibernate を使用しています。プロパティの遅延読み込みは許可されていないため、クエリで選択する必要があります。
私の問題は、Answers テーブルから最新の応答番号を取得しようとしていることですが、多くの場合、オブジェクトが存在しない可能性があるため、Null 参照例外または「コードに到達できない」例外が発生することで立ち往生しています。
これが、コメントされた適切なセクションで私がしていることです。.
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 でこの null 参照例外を回避する方法はありますか? 遅延ロードできないので、ちょっと問題です。