Entity Framework 4 + сохраняемые графы объектов Silverlight - PullRequest
0 голосов
/ 10 февраля 2011

В настоящее время мы создаем наше первое большое приложение с Silverlight 4 (используя PRISM) и Entity Framework 4. Теперь у меня общий вопрос о сохранении данных модели представления. Предположим, у меня есть доменные объекты, которые преобразуются в сущности EF4 с несколькими ассоциациями (сущность, имеющая коллекции, снова имеющая коллекции и т. Д.). Каков наилучший способ сохранить эти графики во время / после действий пользователя? Было бы лучше написать более детализированные методы репозитория, такие как «AddEntityToParent» и «RemoveEntityFromParent», или просто взять все данные из представления и отправить их в метод «SaveLargeParentEntity»? Могу ли я «кэшировать» элементы модели представления для дочерних объектов в Silverlight и перенести все это в EF4 позже, или мне нужно будет выполнить детальное обновление для каждого отдельного элемента, измененного в пользовательском интерфейсе? Любой хороший совет? Я надеюсь, что мой вопрос был достаточно ясен. Спасибо.

1 Ответ

2 голосов
/ 10 февраля 2011

Вы фактически делаете выбор между основными операциями CRUD и работой с графами объектов. Я бы выбрал второй подход, потому что операции CRUD через веб-сервис могут быть очень разговорчивыми.

При работе с объектными графами, отправляемыми через веб-сервис, вам приходится иметь дело с отстраненным поведением. Отдельные сущности + граф объектов вызывают некоторые проблемы при обновлении отношений. Наилучший подход обычно состоит в том, чтобы загрузить весь график перед обновлением (получить прикрепленные объекты) и объединить полученный график во вложенный - он будет правильно отслеживать изменения для вас.

Но поскольку вы используете Silverlight с состоянием, вы также можете подумать об использовании объектов самообследования (STE). STE могут отслеживать изменения после их отсоединения от EF ObjectContext. Таким образом, вы можете вернуть граф объектов из STE из веб-сервиса в приложение Silverlight, внести некоторые изменения в STE и отправить тот же граф объектов обратно в веб-сервис. Применение изменений от STEs выполнит для вас большую работу. Имейте в виду, что STE - не лучшее решение для служб, которые должны работать с обычными веб-приложениями или клиентами .NET.

...