【发布时间】:2019-05-23 16:09:24
【问题描述】:
我有以下代码在加载Peers 时出错:
值不能为空。参数名称:来源
我正在使用FirstOrDefault 和DefaultIfEmpty 方法,并且在select 语句中,我还在检查对象是否为空m => m == null ?。但是,我无法避免错误。有任何想法吗?
ReviewRoundDTO_student results = _context.ReviewRounds
.Include(rr => rr.ReviewTasks).ThenInclude(rt => rt.ReviewTaskStatuses)
.Include(rr => rr.Submissions).ThenInclude(s => s.PeerGroup.PeerGroupMemberships).ThenInclude(m => m.User)
.Include(rr => rr.Rubric)
.Where(rr => rr.Id == reviewRoundId)
.Select(rr => new ReviewRoundDTO_student
{
Id = rr.Id,
SubmissionId = rr.Submissions.FirstOrDefault(s => s.StudentId == currentUser.Id).Id,
Peers = rr.Submissions.FirstOrDefault(s => s.StudentId == currentUser.Id)
.PeerGroup.PeerGroupMemberships.DefaultIfEmpty()
.Select(m => m == null ? new ApplicationUserDto { } : new ApplicationUserDto
{
//FullName = m.User.FullName,
//Id = new Guid(m.UserId)
}),
}).FirstOrDefault();
【问题讨论】:
-
实体ReviewRounds的Submissions属性需要在构造函数中初始化为
new SomeCollection<T>()。 -
@MatJ 感谢您的回复。能否请您详细说明一下?
-
@EdPlunkett 这是 LINQ to Entities 投影查询 - 它必须转换为 SQL,因此根本不涉及“对象” - 实体仅用作元数据。
-
@IvanStoev 好吧,我认为那里的某处很可能是空的。
标签: c# asp.net entity-framework entity-framework-core