Самостоятельно отслеживаемые объекты не являются POCO.Напротив, они очень настойчивы.Более чем EntityObject
сущностей, даже.Что делает их уникальными, так это то, что изменения можно отслеживать, даже если они не привязаны к ObjectContext
.
«Чистым» POCO, как вы говорите, затрудняют отслеживание изменений.На самом деле, единственное, что вы можете сделать, это сравнить снимки объекта.Для этого у контекста объекта есть метод DetectChanges
.
С псевдо-POCO-прокси у вас действительно есть тип, который во время компиляции выглядит (почти) как POCO и как не POCO вво время выполнения.Я говорю «почти», потому что во время выполнения вы получите экземпляр, который является подтипом типа времени компиляции.Из-за этого любые свойства, для которых вы хотите отслеживать изменения, должны быть не частными и виртуальными.Аналогичные ограничения применяются к отложенной загрузке.Вы можете прочитать больше об этом в этой серии статей в блоге команды ADO.NET.