Правильный способ создания / обновления / удаления иерархических данных - PullRequest
2 голосов
/ 16 ноября 2009

Итак, у меня есть такая структура:

Widget:
  Component 1:
  Component 2:
  Component 3:
  ...
  Component n:

Я создаю веб-приложение ASP.NET MVC, которое в рамках своей функциональности позволит пользователю создавать объект Widget и назначать объекты Component (которые имеют ряд свойств) как «потомки» объекта Widget. Пользователи могут не иметь Компонентов или могут добавить 50. Кроме того, они могут редактировать объект Widget и произвольно удалять или изменять свойства Компонента.

Все в приложении работает, но я не доволен тем, как это структурировано. В настоящее время я отправляю все компоненты со всеми их свойствами. Я удаляю все компоненты, в настоящее время связанные с этим виджетом, а затем перечисляю их по каждому компоненту и заново добавляю его.

... Но я не доволен этим решением. Для некоторых виджетов с огромным количеством компонентов (скажем, 500) этот процесс может занять много времени, даже если пользователь изменил только один компонент. Но альтернатива (отслеживание создания / обновления / удаления для каждого компонента) кажется действительно болезненной для построения.

Я уверен , что я могу сделать это лучше, поэтому мне интересно знать, какие шаблоны можно применять для решения этой проблемы (вообще говоря) и, в частности, в контексте веб-приложений .

1 Ответ

1 голос
/ 16 ноября 2009

Почему отслеживание создания / обновления / удаления намного сложнее? Посмотрите на мой ответ на аналогичный вопрос о поиске различий между тем, что находится в вашем хранилище, и тем, что публикуется обратно. При условии, что у каждого компонента есть уникальный идентификатор (что звучит так, как будто он есть), это не должно быть таким сложным. Кроме того, это должно быть несколько быстрее для больших виджетов с большим количеством компонентов, поскольку вы не перестраиваете его список каждый раз.

...