Ранее я использовал Entity Framework в нескольких моих приложениях WPF. В первый раз я впервые использовал EF Database. Было довольно сложно получить модель именно так, как я хотел, и как только она заработала, мне пришлось пройтись и реализовать INotifyPropertyChanged на моих классах сущностей.
Недавно я начал использовать EntityFramework CodeFirst с 4.1, я обнаружил, что намного проще обрабатывать все вещи, измененные в свойствах. Я обычно создаю базовый класс с INotifyPropertyChanged, реализованным на нем, и наследую мои сущности от этого.
Что касается ViewModel, я также начал беспокоиться об этой платформе или этой платформе. Позже я решил просто свернуть свой. Несомненно, у фреймворков есть некоторые интересные возможности, но для обучения мне было гораздо проще войти в него, создав собственный класс ViewModelBase и унаследовав от него все мои ViewModel.
ViewModelBase обычно реализует INotifyPropertyChanged. Позже я создал класс монитора ViewModel, который будет иметь коллекцию ViewModel. Чтобы найти их, я дал ViewModelBase свойство FriendlyName, чтобы для каждого типа унаследованного ViewModel могло быть задано имя для него (мои типы, как правило, RecordMaintenanceViewModel, NavigationViewModel, ShellViewModel и т. Д.), И я обычно наследую мои используемые ViewModel, зависящие от вида, от те. Поэтому в ShipmentView в моей программе доставки ShipmentViewModel наследуется от CollectionViewModel, который наследуется от ViewModelBase. Таким образом, у меня есть функциональность, разделенная на отдельные разделы, позволяющие мне обрабатывать определенные сценарии.
Я обычно портирую свою базу ViewModel на каждый проект и часто беру свои средние ViewModels; хотя иногда мне приходится их воссоздавать.