2012-05-30 2 views
3

Мой вопрос касается первого «М» в MVVM, модели. Я вижу массу вариантов того, как реализовать модель. Некоторые из них просто POCO без бизнес-логики и логики постоянства, а другие содержат один или оба.Настойчивость модели - где это должно произойти?

Прямо сейчас, в нашем приложении, у нас есть достойное разделение между моделями, видами и видами. Это наша текущая структура раствора (его призма приложение WPF):

  • Инфраструктура
  • модуль A
    • ViewModels
    • просмотров
  • модуль B
    • ViewModels
    • Просмотров
  • Модели (распределены между модулями, поэтому его в своей собственной библиотеки классов)
  • Services
  • DataAccess (возможно использование щеголеватый-точка-нетто)
  • Shell (основной проект WPF)

Теперь нам нужно выяснить, как выполнить наш CRUD в отношении базы данных и обновить наши модели. Мне нравится идея держать модели довольно голыми и иметь библиотеку классов «Службы», которая содержит нашу бизнес-логику и выполняет единицу шаблона работы против наших классов доступа к данным. Существуют ли какие-либо известные проблемы, связанные с тем, что модели немыслимы и не знают о логике/доступе к данным? Это довольно необычно делать в MVVM?

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

Наше приложение должно будет сохранять модели для нескольких баз данных. Мы используем Unity в качестве нашего контейнера для инъекций для наших услуг. Как бы вы порекомендовали мне сообщить службе, какое подключение к данным использовать? Ctor, за функцию и т. Д.?

Kinda ищет кого-то, кто построил подобную структуру, и каков их опыт/рекомендации.

ответ

5

На мой взгляд, модели MVVM просто «представляют» данные и поэтому не должны иметь никакой логики, CRUD или иначе внедрены. У вас уже есть уровень доступа к данным, поэтому совершенно нормально писать свой CRUD-код и использовать DI для доступа к этому коду CRUD из ваших моделей.

«Красота» из MVVM является то, что она открыта для интерпретации, так что я уверен, что кто-то будет утверждать, что модель IS данных и может containt CRUD логики ...

У меня есть все мои операции CRUD в моем DAL и я еще не вижу недостатка в этом подходе ...

+1

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

+0

Спасибо.В итоге я использовал шаблон «Единица работы» с услугами/репозиториями, чтобы заполнить и сохранить мои модели. –

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