使用實體框架查詢數據時,以下哪項防禦檢查更可取?使用實體框架查詢數據時,哪個防禦檢查更可取?
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);
我個人使用第二個選項,因爲它感覺吸塵器給我,但我不是執行兩個數據庫調用而不是一個?我不確定實體框架的內在機制。
如果*有*是一個用戶,那麼可能只需與'users.Single(u => ...)'一起去,如果一個序列中有多個元素,就會彈出「InvalidOperationException」 ? –
第二個,如果在兩個數據庫調用之間刪除'user'記錄會發生什麼? – AakashM