Подтвердить что ты не робот

EF4 POCO: моментальный снимок против самопроверки по WCF

В прошлом году я разработал сервис доступа к данным для нашего проекта с использованием 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 могут иметь проблемы) очень ценится.

4b9b3361

Ответ 1

Перейдите с помощью опции 3. Самостоятельные отслеживающие объекты, так как они предназначены для них.

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

Этот пост дает хорошую демонстрацию.

Ответ 2

Другие два параметра применимы только тогда, когда изменения выполняются, когда объектконтекст находится вокруг. Ваш единственный вариант - STE. С помощью STE организации будут отслеживать свои изменения. Когда граф измененного объекта отправляется на сервер, вы можете просто воспроизвести эти изменения, как показано ниже. db.Dustomers.ApplyChanges(заказчика); db.SaveChnages();

С помощью STE вы можете создавать свои entiites в проекте библиотеки классов и делиться ими между клиентом WCF, клиентом silverlight, asp.net и wpf. Таким образом, это позволяет повторно использовать объекты для разных клиентов.