Какова цель самостоятельного отслеживания сущностей?

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

В чем смысл самостоятельного отслеживания сущностей и для чего вы их используете?

2 ответа

Решение

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

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

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

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

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

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

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

Другие вопросы по тегам