2015-11-19 3 views
0

Я делал некоторые беспорядки с dbcontext/EF, и оба производят одно и то же для моих нужд. Действительно ли они эквивалентны? Любые интересные моменты, чтобы рассмотреть разницу?В чем разница между этими двумя выражениями LINQ?

//Something 
var user = dbContext.Set<User>() 
.Include(u => u.Preferences).FirstOrDefault(u => u.Id == userID); 


//Something else 
var user = dbContext.Set<User>().Where(u => u.Id == userID) 
.Include(u => u.Preferences).FirstOrDefault(); 

..Просто любопытно.

Спасибо!

ответ

4

Они функционально эквивалентны и должны привести к тому же SQL-запросу, выполняемому в отношении базы данных (в зависимости от того, как реализован поставщик Linq, конечно).

0

Как в @ThomasLevesque ответ, они функционально эквивалентны.

Подробнее, EF перевести их в одно и то же дерево выражений (выражение where и Join/UnionAll - в этом случае только Join-expression для решения Include).
Итак, единственный поставщик EF всегда возвращает тот же запрос.

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