Какова цель самостоятельного отслеживания сущностей?
Я читал о сущностях самоконтроля в.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 и включают в себя некоторые преимущества каждого из них.