Мой вопрос касается первого «М» в MVVM, модели. Я вижу массу вариантов того, как реализовать модель. Некоторые из них просто POCO без бизнес-логики и логики постоянства, а другие содержат один или оба.Настойчивость модели - где это должно произойти?
Прямо сейчас, в нашем приложении, у нас есть достойное разделение между моделями, видами и видами. Это наша текущая структура раствора (его призма приложение WPF):
- Инфраструктура
- модуль A
- ViewModels
- просмотров
- модуль B
- ViewModels
- Просмотров
- Модели (распределены между модулями, поэтому его в своей собственной библиотеки классов)
- Services
- DataAccess (возможно использование щеголеватый-точка-нетто)
- Shell (основной проект WPF)
Теперь нам нужно выяснить, как выполнить наш CRUD в отношении базы данных и обновить наши модели. Мне нравится идея держать модели довольно голыми и иметь библиотеку классов «Службы», которая содержит нашу бизнес-логику и выполняет единицу шаблона работы против наших классов доступа к данным. Существуют ли какие-либо известные проблемы, связанные с тем, что модели немыслимы и не знают о логике/доступе к данным? Это довольно необычно делать в MVVM?
Интересно, ограничиваю ли я себя или делаю вещи более сложными, чем они должны быть, не помещая какую-либо логику в модели, например, загружая модель изнутри своего ctor с учетом аргумента. В качестве примечания это будет большое приложение.
Наше приложение должно будет сохранять модели для нескольких баз данных. Мы используем Unity в качестве нашего контейнера для инъекций для наших услуг. Как бы вы порекомендовали мне сообщить службе, какое подключение к данным использовать? Ctor, за функцию и т. Д.?
Kinda ищет кого-то, кто построил подобную структуру, и каков их опыт/рекомендации.
Кроме того, MVVM не является шаблоном архитектуры приложения, но он предназначен для создания шаблонов пользовательских интерфейсов более стандартизованным способом. Поэтому, когда дело доходит до данных, MVVM не является средством выбора. – PVitt
Спасибо.В итоге я использовал шаблон «Единица работы» с услугами/репозиториями, чтобы заполнить и сохранить мои модели. –