2009-11-16 2 views
2

Таким образом у меня есть структура вроде этого:Правильный способ создать/обновить/удалить иерархические данные

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

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

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

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

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

ответ

1

Зачем отслеживать создание/обновление/удаление намного сложнее? Взгляните на мой response to a similar question об обнаружении различий между тем, что находится в вашем репозитории, и тем, что отправляется обратно. Если каждый компонент имеет уникальный идентификатор (который звучит так, как будто он), это не должно быть так сложно. Также это должно быть несколько быстрее для крупных виджетов с большим количеством компонентов, поскольку вы не перестраиваете свой список каждый раз.

+0

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

Смежные вопросы