Ответ 1
Перейдите с помощью опции 3. Самостоятельные отслеживающие объекты, так как они предназначены для них.
"Объекты самопроверки оптимизированы для сценариев сериализации"
Этот пост дает хорошую демонстрацию.
В прошлом году я разработал сервис доступа к данным для нашего проекта с использованием 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 могут иметь проблемы) очень ценится.
Перейдите с помощью опции 3. Самостоятельные отслеживающие объекты, так как они предназначены для них.
"Объекты самопроверки оптимизированы для сценариев сериализации"
Этот пост дает хорошую демонстрацию.
Другие два параметра применимы только тогда, когда изменения выполняются, когда объектконтекст находится вокруг. Ваш единственный вариант - STE. С помощью STE организации будут отслеживать свои изменения. Когда граф измененного объекта отправляется на сервер, вы можете просто воспроизвести эти изменения, как показано ниже. db.Dustomers.ApplyChanges(заказчика); db.SaveChnages();
С помощью STE вы можете создавать свои entiites в проекте библиотеки классов и делиться ими между клиентом WCF, клиентом silverlight, asp.net и wpf. Таким образом, это позволяет повторно использовать объекты для разных клиентов.