EF 查询的空检查是否在数据库或网络服务器上执行?

Is an EF query's null check performed on the db or webserver?

我正在使用 EF 和 Sql 服务器 (CE)。我试图确保尽可能多的是 运行 在数据库上。考虑一下:

var data =
  getSomeEntities()
  .OrderBy(a => a.Date)
  .Select(a => new {
    Id    = a.Id,
    Name  = a.Name,
    Ref   = a.CustomerProfile != null ? a.CustomerProfile.Ref : null,     // ???
    Email = a.Email
  })
  .ToList();

null 检查(标有“???”的行)是在数据库上执行的,还是先具体化并在网络服务器上执行的?

另外,我注意到我的一些代码甚至没有执行空值检查并且可以正常工作,在某些地方如果我不执行它就会抛出错误。不知道有没有必要?

这是在数据库中执行的 - 如果您添加适当的日志记录,您应该会看到适当的 SQL 以获得正确的结果。

在 C# 6 中你可以直接使用

Ref = a.CustomerProfile?.Ref