2012-04-03 4 views
3

В последнее время у меня было достаточно создания шаблона шаблона ViewModel, поэтому я включил функциональность NotifyPropertyChanged в решение DynamicProxy.Перехватчик/крюк NHibernate для коллекций с лёгкой нагрузкой/Каскад

Для того, чтобы все механизмы Changenotification WPF работали для моей реализации, мне остается только обменять мои коллекции с ObservableCollections, что, к сожалению, приводит к проблеме с производительностью (уведомление об изменении для каждой записи добавлено/удалено, поэтому нет подходит для массового использования, потому что пользовательский интерфейс слишком занят, пытаясь не отставать от списка изменений).

Таким образом, в моей модели, коллекция других моделей (HasMany отношение, то есть) не проводится в списке, но в пределах ObservableCollection-производному, который имеет два метод SuspendCollectionChangeNotification и ResumeCollectionChangeNotification (немного как реализации, показанную here) ,

Инфраструктура есть все, теперь я ищу крючок перехватчика, который позволяет мне позвонить Suspend() до того, как NHibernate загрузит данные Child и Resume() после того, как все будет готово.

Я немного боюсь, я добавлю это к прокси-серверу, о котором я упоминал выше, который хорошо разбирается в свойствах, которые запрашиваются, но было бы просто сохранить это в перехватчике NHibernate. ..

ответ

0

NHibernate имеет IInitializeCollectionEventListener, который дает вам InitializeCollectionEvent при загрузке коллекции.

Вы можете подключить так:

var listener = new YourCollectionListenerImpl(); 
configuration.SetListener(ListenerType.LoadCollection, adapter); 

К сожалению, это только говорит Вам, что коллекция загрузки происходящую. Я не думаю, что можно определить, когда оно начнется и когда оно закончится.

+0

Привет, Мэтт, я собираюсь проверить это, спасибо! –

+0

Извините, я еще не смог проверить это (сумасшествие праздника). Надеюсь, что так щедрый механизм позволит мне это сделать, как только я вернусь в офис –

Смежные вопросы