使用 Entity Framework 查询数据时,以下哪种防御性检查更可取?
1.null
支票:
user = users.SingleOrDefault(u => u.Email.Equals(email));
if(user == null)
{
throw new Exception("Some critical error!");
}
OperationsOnUser(user);
2. LINQ的Any()
:
if(users.Any(u => u.Email.Equals(email)))
{
user = users.Single(u => u.Email.Equals(email));
}
else
{
throw new Exception("Some critical error!");
}
OperationsOnUser(user);
我个人使用第二个选项,因为它对我来说感觉更干净,但是我不是执行两个数据库调用而不是一个吗?我不确定实体框架的内部机制。