В прошлом году я разработал сервис доступа к данным для нашего проекта с использованием Entity Framework (конечно,.NET3.5) и используя книгу Джули Лерман как руководство, разработанное для отслеживания состояния объектов POCO. Мы используем WCF, а также имеем Silverlight 3 клиентов. Мы переходим к .NET 4.0, и я хочу переключиться на использование генерации кода, чтобы исключить потраченное время разработчика, записывая классы POCO и классы перевода.
В результате проведенных мной исследований, похоже, существует три способа отслеживания состояния POCOs:
1) Измененные прослеживаемые прокси-серверы: кажется, не полезны для нас, поскольку, похоже, это не работает по сериализации WCF.
2) Снимок основан: моментальный снимок берется, когда граф объекта POCO извлекается, возвращаемый граф от клиента сравнивается с этим снимком, а различия сравниваются... мне кажется хорошо.
3) Self-Tracking Entities: генератор кода генерирует логику для самостоятельного отслеживания объектов POCO. Это кажется близким к тому, что мы делаем сейчас, за исключением того, что все оно создано для нас.
Я пытаюсь выяснить, какие преимущества и недостатки находятся между всеми этими методами. Я предполагаю, что 1 и 2 "связаны" и что им нужен ObjectContext, из которого первоначально были запрошены POCO, чтобы оставаться instanciated, но не смогли подтвердить это. Я также не вижу причин, по которым кто-то действительно беспокоился бы с вариантом 1, учитывая, что вариант 3, похоже, делает то же самое и многое другое...
Снимок кажется самым простым для меня, но если для этого требуется, чтобы ObjectContext оставался открытым долгое время, я не уверен...
Я всего лишь младший программист, поэтому любые советы здесь, особенно в отношении Silverlight 3 (я считаю, что варианты 2 и 3 работают с Silverlight 3, но 2 могут иметь проблемы) очень ценится.