Я думаю, что вы затрагиваете аспекты MVVM, в которых А) просят больше всего вопросов и Б) имеют наименьшее количество консенсуса.
Шаблон подразумевает три слоя: модель - это данные,View - это экран, а ViewModel находится между ними.Я начинаю думать, что это неточно или, по крайней мере, не оптимально.От данных к экрану, вот к чему я стремлюсь:
A) Сервисный уровень: этот код может быть реальным сервисом или оболочкой для вызовов ADO.NET.Какой бы ни была разновидность, его задача - взаимодействовать с физическим источником данныхЭто делается с использованием сущностей (не обязательно классов EF, только классов, представляющих базу данных).
B) Слой сущности: это классы, полученные на уровне службы.Все взаимодействие с физическим источником данных и из него происходит через эти классы сущностей.
C) Уровень модели данных: эти классы обертывают / управляют слоем сущности.В частности, они реализуют INotifyPropertyChanged, чтобы их можно было использовать позже в представлении, а также предоставляют методы и свойства для доступа к слою сущности.Эта абстракция позволяет изменять и обновлять слой Entity, не оказывая негативного влияния на ViewModel или View.
D) Уровень ViewModel: класс ViewModel, который также реализует INotifyPropertyChanged, управляет взаимодействием между классами View и Data Model.,Команды и специфическое визуальное форматирование свойства (скажем, объединение FirstName и LastName в свойство FullName) происходят на этом уровне.ViewModel может дополнительно абстрагировать класс Data Model, но на этом этапе в этом нет необходимости.
E) Слой вида: окончательный вид (Window, Page или UserControl).Мое жесткое и быстрое правило - поддерживать отношения 1 ViewModel для View (и наоборот).
Я называю эти слои, потому что это логическая идея: то, как они физически реализованы, будет зависеть от вашей ситуации..
FWIW, я недавно много учил MVVM и закреплял свои идеи об архитектуре.Первое, что я говорю при обучении, это то, что существует множество способов реализации MVVM, так же как есть люди, внедряющие MVVM.Хотя это, очевидно, немного гипербола, идея состоит в том, что вы должны найти то, что лучше всего подходит для вас и вашей ситуации.