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
我正在使用 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