В последнее время у меня было достаточно создания шаблонного кода ViewModel, поэтому в итоге я добавил функциональность NotifyPropertyChanged в решение на основе DynamicProxy.
Чтобы все механизмы WPF Changenotification работали для моей реализации, все, что мне нужно сделать сейчас, это обменять мои коллекции на ObservableCollections, что, к сожалению, вызывает проблемы с производительностью (уведомление об изменении для каждой добавленной / удаленной записи, поэтому не подходит для массового использования. потому что пользовательский интерфейс слишком занят, пытаясь не отставать от списка изменений).
Таким образом, в моих моделях коллекции других моделей (то есть отношений HasMany) хранятся не в списке, а в производном ObservableCollection, который имеет два метода SuspendCollectionChangeNotification
и ResumeCollectionChangeNotification
(немного похоже на показанную реализацию здесь).
Инфраструктура есть, теперь я ищу перехватчик, который позволяет мне вызывать Suspend()
до того, как NHibernate загружает дочерние данные, и Resume()
после того, как это будет сделано.
Я немного боюсь, что в конечном итоге добавлю это к прокси, о котором я упоминал выше, который хорошо разбирается в запрашиваемых свойствах, но было бы просто замечательно сохранить это в перехватчике NHibernate ...