EF4 POCO: Снимок и Самотрекинг по WCF
=====================================

 В прошлом году я разработал сервис доступа к данным для нашего проекта, используя Entity Framework (конечно, .NET3.5) и используя книгу Джули Лерхман в качестве руководства, разработавшего отслеживание состояния объектов POCO. Мы используем WCF, а также имеем клиентов Silverlight 3. Мы переходим на .NET 4.0, и я хочу перейти на использование генерации кода, чтобы исключить потерю времени разработчиков на написание классов POCO и классов перевода. 

 С проведенным мною исследованием, кажется, есть 3 способа отслеживания состояния POCO: 

 1) Изменены отслеживаемые прокси: не кажется нам полезным, так как кажется, что это не работает при сериализации WCF. 

 2) На основе снимка: снимок делается, когда извлекается граф сущности POCO, возвращаемый граф клиента сравнивается с этим снимком и сравниваются различия ... мне кажется, это хорошо. 

 3) Само-отслеживающиеся объекты: генератор кода генерирует логику для самостоятельного отслеживания внутри объектов POCO. Это кажется близким к тому, что мы делаем сейчас, за исключением того, что все это создано для нас. 

 Я пытаюсь понять, какие преимущества и недостатки есть у всех этих методов. Я предполагаю, что 1 и 2 «связаны» и что им нужен ObjectContext, из которого изначально запрашивались POCO, чтобы оставаться экземпляром, но не смог подтвердить это. Я также не вижу причины, по которой кто-то действительно будет беспокоиться о варианте 1, учитывая, что вариант 3, кажется, делает то же самое и даже больше ... 

 Снимок кажется мне самым простым, но если для этого требуется, чтобы ObjectContext оставался открытым в течение длительного времени, я не уверен ... 

 Я всего лишь младший программист, поэтому любые советы, особенно в отношении Silverlight 3 (я думаю, варианты 2 и 3 работают с Silverlight 3, но у 2 могут быть проблемы), очень ценятся. 

 Перейдите к Варианту 3. Самостоятельно отслеживаемые объекты, поскольку они предназначены для этого 

 «Объекты самоконтроля оптимизированы для сценариев сериализации» 

 [Этот пост](http://blogs.msdn.com/adonet/pages/feature-ctp-walkthrough-self-tracking-entities-for-the-entity-framework.aspx) дает хорошую демонстрацию.