2014-09-01 2 views
1

Я знаю, что мы можем сейчас (от EF5?) ИспользоватьEntity Framework производительности между включают (строка) и включают в себя (х => 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)) 

С Отладка, запросы, похоже, абсолютно одинаковы, поэтому я задавал себе пару вопросов:

  • В чем разница между этими двумя обычаями?
  • Есть ли разница в производительности между этими двумя линиями?
  • Какова наилучшая практика, которую я должен использовать, соответствующую какой ситуации?

Спасибо за ваши ответы;)

ответ

1

Какие различия между этими двумя использований?

Один использует строку, а другой нет. SO не бросает ошибку компиляции, если свойство переименовано, а другое -.

Есть ли разница в производительности между этими двумя линиями?

Строка немного быстрее, IIRC. Меньше рефлекторных поисков, чтобы найти то, что имеется в виду. Я думаю, что вторая форма динамически получает строку.

Что такое лучшая практика, которую я должен использовать, соответствующую , какую ситуацию?

Всегда версия, отличная от строки, из-за различий, описанных в первой части, - если вы переименуете это свойство, это можно автоматически исправить и найти, но это не так в строковой форме.

Совершенно очевидно, когда вы думаете об этом. А также - ах - задокументированы.

Смежные вопросы