Я думаю, что классы, сгенерированные с использованием DbContext Generator, будут использовать только «ленивые загрузочные прокси», а не «менять прокси отслеживания» (обратите внимание, что есть два типа прокси), как описано в http://blogs.msdn.com/b/adonet/archive/2009/12/22/poco-proxies-part-1.aspx. Как вы Как указывалось выше, все сопоставленные свойства должны быть виртуальными, чтобы прокси отслеживания изменений работали. Это не требуется только для ленивых загрузок прокси (где только свойства навигации должны быть виртуальными).
Я думаю, что Microsoft должна изменить это в шаблоне T4, потому что без прокси отслеживания изменений, это намного медленнее. Особенно, если у вас много объектов в контексте объекта.
Мне удалось это подтвердить. В книге Programming Entity Framework: DbContext на странице 66 говорится об этом. Вы можете использовать код, подобный следующему, чтобы убедиться, что объект использует прокси-сервер отслеживания изменений.
Person p = context.People.Find(123);
bool b = p is IEntityWithChangeTracker;
Я удивлен, что шаблон T4 не делает все свойства виртуальными по умолчанию. Это кажется странным упущением, если только по какой-то причине они не сделали это намеренно.