Производительность Entity Framework между include (строка) и include (x => x.myType)

1

Я знаю, что теперь мы можем (из EF5?) Использовать

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))

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

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

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

Теги:
linq
entity-framework

1 ответ

1
Лучший ответ

В чем разница между этими двумя обычаями?

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

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

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

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню