Где разместить создание / добавление новой сущности, должна ли она перейти в новую ViewModel? - PullRequest
1 голос
/ 20 апреля 2011

У меня есть представление с формой, которая отображает данные из объектов, которые находятся в ObservableCollection, который находится в ViewModel. ObservableCollection позволяет мне пролистывать данные.

Объекты в ObservableCollection имеют тип ItemTypeViewModel. Это класс-оболочка, который оборачивает сущность ItemType. ItemType само по себе происходит из Linq2SQL (нет классов домена, основа приложения уже создана)).

Теперь мне нужно иметь возможность создавать новые типы элементов. Я хочу использовать форму, чтобы сделать это. У меня есть кнопка New, которая запускает команду в ViewModel представления, которая делегирует ее методу в той же модели представления (вероятно, что-то вроде CreateNewItemType(). Этот метод должен будет создать новый ItemType , но вот где моя дилемма. Большинство примеров, которые я вижу, используют класс Domain для создания нового экземпляра, например

Customer customer = Customer.CreateNewCustomer();

Но так как у меня нет классов домена, я не могу этого сделать. Это кажется странным помещать его в ViewModel представления, а также помещать его в ViewModel, который обертывает ItemType юридическое лицо.

Какой подход лучше использовать здесь?

Ответы [ 2 ]

0 голосов
/ 20 апреля 2011

Я пытаюсь ответить, но я не совсем уверен, так ли это: я подгруппирую себя в модели представления события изменения коллекции.Когда пользователь добавляет новый элемент или удаляет один, я собираю добавление / удаление в две отдельные коллекции.Затем на этапе фиксации я создам новый экземпляр ItemType из данных в новой коллекции элементов и отправлю эти записи в БД, а также выполню удаление.Хуже всего, если вам нужно выполнить проверку изменений на отдельные строки ...

0 голосов
/ 20 апреля 2011

Я мог бы быть далеко от базы здесь, но похоже, что у вас есть контроллер, который обслуживает ObservableCollection<ItemType>.

Он также звучит так же, как на той же странице (или аналогичной странице), которую вы хотитечтобы иметь возможность принимать пользовательский ввод с помощью элементов формы и использовать эти элементы вместе для заполнения нового экземпляра ItemType.

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

Это все, конечно, если вы работаете в рамках Asp.Net MVC, не так ли?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...