Самостоятельные отслеживающие объекты (STE) являются реализацией набора изменений (предыдущая реализация .NET набора изменений была DataSet
). Разница между STE и другими типами объектов (POCO, EntityObject) заключается в том, что общие типы объектов могут отслеживать изменения только при подключении к живому ObjectContext
. Как только общая сущность отсоединена, она теряет способность отслеживать изменения. Это именно то, что решает STE. STE может отслеживать изменения, даже если вы отсоедините его от ObjectContext
.
Обычное использование STE в автономных сценариях, таких как .NET для .NET связи через веб-сервисы. Первый запрос к веб-службе создаст и вернет STE (сущность отсоединяется при сериализации и ObjectContext
живет только для обслуживания одного вызова). Клиент внесет изменения в STE и передаст их в другом вызове веб-службы. Служба сможет обрабатывать изменения, потому что у нее будет доступно внутреннее отслеживание изменений STE.
Обработка этого сценария без отслеживания изменений возможна, но она намного сложнее, особенно когда вы работаете с целым графом объектов вместо одного объекта - вы должны вручную объединить изменений, полученных от клиента, в текущее состояние в базе данных.
Имейте в виду, что STE не предназначены для совместимых решений, поскольку их функциональность основана на совместном использовании кода STE между сервером и клиентом.