1 - нет правильного пути, это зависит от ваших требований и целей.
2 - С MVVM модель должна находиться между WPF и базой данных.Это означает, что все обращения к базе данных должны проходить через модель, и все записи в базу данных также должны проходить через модель.Графический интерфейс WPF должен привязываться только к модели.Обычно это означает, что ваша часть WPF состоит в основном из кода XAML.Весь код, который обращается к базе данных, должен быть в модели.
Есть веские причины для отделения этого.
- Вы можете написать модульные тесты для этой модели.
- Модель представления не зависит от внешнего вида графического интерфейса.Это означает, что вы можете легко изменить графический интерфейс, добавив различные компоненты и просто привязавшись к модели.
- Быстрый поиск в Google, вероятно, может дать больше причин.
3 - Я бы попытался отправить только те объекты, которые изменились.Это можно сделать, передав коллекцию вашей модели представления, и пусть ваша модель представления выяснит, что изменилось.
4 - Я не совсем понимаю, что вы хотите сделать.Обычно, чтобы создать TreeView, вы должны создать HierarchicalDataTemplate для каждой из ваших моделей представлений.Элемент управления TreeView позаботится обо всем остальном.Вы должны действительно сделать некоторые уроки по этому вопросу, потому что это довольно сложно обернуть голову вокруг.