Вопрос

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

Судя по проведенному мной исследованию, существует три способа отслеживания POCO:

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

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

3) Объекты самоотслеживания:Генератор кода генерирует логику для самостоятельного отслеживания внутри объектов POCO.Кажется, это похоже на то, что мы делаем сейчас, за исключением того, что все это генерируется за нас.

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

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top