Каков жизненный цикл контекста данных? Это тот же контекст данных или каждый раз новый? (вероятно, должно быть последнее).
Если вы повторно используете контекст данных, он обязан всегда возвращать вам один и тот же объект , когда кажется, что он идентичен. Так что, если он ранее дал вам версию с 9, он будет продолжать возвращать вам эту ссылку, даже если базовые данные изменятся.
На данный момент это все еще происходит в оба конца; Чтобы избежать поездки туда и обратно, нужно использовать:
var obj = ctx.SomeTable.Single(x=>x.Id == id);
т.е. если у него уже есть объект с Id == id
в локальном кэше идентификаторов, он вообще не будет выполнять запрос к данным.
любая другая конструкция будет совершать туда и обратно. В 4.0 есть исправление , так что .Where(x=>x.Id == id).Single()
позволит избежать обхода, который должен иметь синтаксис запроса, т.е.
var obj = (from x in ctx.SomeTable
where x.Id == id
select x).Single();