在大多数需要查询模型的地方,我只需要返回具有相应ACL的模型。
var myUnits = _context.Units
.Include(unit => unit.AccessControlRules)
.Where(unit => unit.AccessControlRules.FirstOrDefault(acl => acl.UserId == 15) != null);
每次都能正常工作。它只返回具有Id为15的用户的acl的单元。
但是,当我将其提取到下面的表单中时,它会抛出一个value cannot be null异常,因为unit.AccessControlRules为空。
var myUnits = _context.Units
.Include(unit => unit.AccessControlRules)
.Where(unit => permissionCheck(unit));
private bool permissionCheck(Unit unit)
{
return unit.AccessControlRules.FirstOrDefault(acl => acl.UserId == 15) != null;
}
它是完全相同的代码,而第二个(非工作)版本
unit.AccessControlRules == null
.
有人能解释一下这种行为吗?