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