2014-09-01 43 views
1

我知道,我們現在可以(從EF5?)使用之間的實體框架的性能包括:(串),包括(X => x.myType)

var employees = Db.Employees.Include("Details").Include("Details.DetailsType")) 

,而不是

var employees = Db.Employees.Include(x => x.Details).Include(x => x.Details.Select(y => y.DetailsType)) 

隨着調試,tho查詢似乎是完全一樣的,所以我想知道自己幾個問題:

  • 這兩種用法有什麼區別?
  • 這兩行之間的性能有差異嗎?
  • 什麼是最佳實踐,我應該使用哪一個對應哪種情況?

謝謝您的回答;)

回答

1

是什麼這兩種用法的區別?

一個使用字符串,另一個不使用。所以如果該屬性被重命名,另一個不會拋出編譯錯誤。

這兩行之間的性能有差別嗎?

該字符串稍快於IIRC。減少反射查找來查找含義。我認爲第二種形式動態獲取字符串。

什麼是最佳做法,哪一個我應該使用對應 哪種情況?

總是非字符串版本,因爲第一部分描述的區別 - 如果您重命名該屬性,則可以自動更正並找到該屬性,而字符串形式不是這種情況。

實際上,當你考慮它時,其實很明顯。以及 - 啊 - 記錄。