Какова цель объектов самоконтроля?

Я читал об элементах самонаблюдения в .net и о том, как они могут быть сгенерированы из *.edmx файла. То, что я пытаюсь понять, - это то, что генерирование этих объектов дает вам основные элементы EF? Кроме того, некоторые люди упомянули объекты самоконтроля и Silverlight, но почему вы использовали их, а не клиентскую или разделяемые классы, созданные службами RIA?

В чем смысл самоконтроля и почему вы их используете?

Ответ 1

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

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

Обработка этого сценария без отслеживания изменений возможна, но это намного сложнее, особенно когда вы работаете с целым графиком объектов вместо единого объекта - вы должны вручную объединить полученные изменения от клиента до текущего состояния в базе данных.

Помните, что STE не предназначены для совместимых решений, поскольку их функциональность основана на совместном использовании кода STE между сервером и клиентом.

Ответ 2

Основная цель - помочь в развитии N-уровня. Поскольку они самонаблюдаются, вы можете сериализовать их, скажем, службу WCF, а затем де-сериализовать их обратно, и они все равно будут знать, какие изменения были сделаны и ожидаются для базы данных.

Объекты самопроверки знают, как это сделать их собственное отслеживание изменений независимо от из которых уровень этих изменений на. Как архитектура, самоконтроль субъекты находятся между DTO и DataSets и включает некоторые из преимущества каждого из них.

http://blogs.msdn.com/b/efdesign/archive/2009/03/24/self-tracking-entities-in-the-entity-framework.aspx