DbContext Generator を使用して生成されたクラスは、http://blogs.msdn.com/b で説明されているように、「変更追跡プロキシ」ではなく「遅延読み込みプロキシ」のみを使用すると思います (プロキシには 2 種類あることに注意してください) 。 /adonet/archive/2009/12/22/poco-proxies-part-1.aspx . ご指摘のとおり、変更追跡プロキシが機能するには、マップされたすべてのプロパティが仮想である必要があります。これは、遅延読み込みプロキシ (ナビゲーション プロパティのみが仮想である必要がある場合) には必要ありません。
Microsoft は T4 テンプレートでこれを変更する必要があると思います。なぜなら、変更追跡プロキシがなければ、はるかに遅くなるからです。特に、オブジェクト コンテキストに多数のエンティティがある場合。
これを確認できました。本のプログラミング エンティティ フレームワーク: DbContext の 66 ページで、これについて説明しています。次のようなコードを使用して、オブジェクトが変更追跡プロキシを使用していることを確認できます。
Person p = context.People.Find(123);
bool b = p is IEntityWithChangeTracker;
T4 テンプレートがデフォルトですべてのプロパティを仮想化していないことに驚いています。なんらかの理由で故意にやったという理由がない限り、奇妙な見落としのように思えます。