Я понимаю MVVM следующим образом:
1) Ваш пользовательский интерфейс привязан к вашей ViewModel.Ваша ViewModel, в свою очередь, оборачивает вашу модель и преобразует ее в удобный для привязки интерфейс.Модели могут быть дружественными к персистентности, но дружественные к персистентности модели не всегда дружественны для пользовательского интерфейса.Идея ViewModel состоит в том, чтобы преодолеть этот пробел и адаптировать модель к тому, с чем пользователь может легко связать пользовательский интерфейс.
2) Ваша модель может быть любой структурой класса-сущности, если вы предпочитаете, или простыми классами (мое предпочтение)).Единственная важная вещь - это то, что он сможет уведомлять вашу ViewModel об изменении его свойств.Поэтому я обычно рекомендую, чтобы класс модели реализовывал INotifyPropertyChanged или что-то подобное.
3) Это ваше дизайнерское решение.Ваш уровень доступа к данным должен быть отделен от модели, но должен взаимодействовать с моделью.См. Принцип единой ответственности.Ваша модель хранит только данные.
4) Бизнес-логика может быть в ViewModel, да, или в контроллерах, которые координируют одну или несколько ViewModel.
5) Обычно вы хотите создать одну ViewModel длятип элемента пользовательского интерфейса.Это может быть довольно детализированным, особенно когда ViewModels содержат другие ViewModels.Например, если у вас есть сетка в вашем пользовательском интерфейсе, у вас может быть ViewModel для всей сетки, а затем другой класс ViewModel для самих строк.Нет ничего необычного в том, чтобы иметь больше ViewModel, чем Models, например, у вас может быть ViewModel для строки сетки и другая ViewModel для представления Details, но они могут отображаться на одну и ту же модель.
Hopeэто помогает!