[упс; обратите внимание, что этот ответ относится к Linq-to-SQL, а не к Entity Framework.]
Я оставил это здесь (вместо того, чтобы удалить), потому что это частично относится к теме и может быть полезно.
В дополнение к другим ответам, обратите внимание, что контекст данных также имеет возможность избегать двусторонней обработки запросов «по первичному ключу» - он сначала проверит кэш.
К сожалению, он был полностью сломан в 3.5 и все еще наполовину сломан в 3.5SP1, но он работает для некоторые запросы. Это может сэкономить много времени, если вы получаете отдельные объекты.
Так что, в основном, IIRC вам нужно использовать:
// uses object identity cache (IIRC)
var obj = ctx.Single(x=>x.Id == id);
но не:
// causes round-trip (IIRC)
var obj = ctx.Where(x=>x.Id == id).Single();